[IT Info] Jar 파일, War 파일

2025. 9. 15. 21:39·IT Information
728x90
반응형

개발을 하다 보면 .jar와 .war라는 확장자를 자주 접하게 됩니다. 둘 다 Java 세계에서 중요한 배포 단위이지만, 언제 어떤 걸 써야 하는지 헷갈리기 쉽죠. 이번 글에서는 정의, 목적, 특징, 사용 방법, 차이점을 한눈에 정리해보겠습니다.

 

1. What is Jar File? 

JAR (Java ARchive) 는 Java 클래스 파일, 리소스(이미지, 설정파일 등), 메타데이터를 하나의 압축 파일로 묶어 놓은 패키지입니다. 쉽게 말하면 Java 프로젝트 실행 파일이라고 할 수 있습니다.

 

1) 목적

 

  • 여러 .class 파일과 라이브러리를 하나의 실행 단위로 묶기 위함.
  • 다른 프로젝트에서 쉽게 재사용할 수 있도록 배포.
  • 라이브러리 관리 및 의존성 처리를 단순화.

2) 특징

 

  • ZIP 포맷 기반(즉, unzip으로도 열 수 있음).
  • META-INF/MANIFEST.MF 파일을 통해 메인 클래스 지정 가능.
  • 실행 가능한 JAR는 java -jar 파일명.jar으로 바로 실행 가능.

3) 사용방법

# jar 생성
jar cvf app.jar -C out/production/MyProject .

# 실행
java -jar app.jar

 

 

 

2. What is War File?

WAR (Web Application Archive) 는 웹 애플리케이션을 배포하기 위한 아카이브 파일입니다.
즉, 서블릿/JSP 기반 웹 프로젝트를 Tomcat, Jetty, JBoss 같은 서블릿 컨테이너에서 실행할 수 있도록 묶어놓은 배포 단위입니다.

 

1) 목적

 

  • 웹 애플리케이션을 표준화된 구조로 묶어, WAS(Web Application Server)에 쉽게 배포.
  • JSP, 서블릿, HTML, CSS, JS, 라이브러리(JAR 포함) 등을 한 번에 배포.

2) 특징

  • 특정 디렉토리 구조를 따라야 함.
/WEB-INF/
    web.xml      (웹 애플리케이션 설정 파일)
    classes/     (컴파일된 .class 파일)
    lib/         (필요한 JAR 라이브러리)
  • 단독 실행 불가능 → WAS에 배포해야 실행됨.
  • 주로 엔터프라이즈 애플리케이션, 대규모 웹 서비스에서 사용.

3) 사용방법

# war 생성 (예: Maven/Gradle 빌드 시 자동 생성)
mvn package   # target/myapp.war 생성

# Tomcat 배포 (webapps 폴더에 복사)
cp target/myapp.war $TOMCAT_HOME/webapps/

# 배포 후 Tomcat 자동 해제 및 실행
http://localhost:8080/myapp

 

 

3. Jar와 War 차이점 비교

구분 JAR 파일 WAR 파일
확장자 .jar .war
의미 Java 실행/라이브러리 패키지 웹 애플리케이션 패키지
실행 방식 java -jar 로 직접 실행 가능 WAS(Tomcat, JBoss 등)에 배포 필요
용도 라이브러리 제공, 콘솔 앱, 스프링 부트 실행 파일 JSP/서블릿 기반 웹 앱 배포
구조 자유로운 구조 반드시 /WEB-INF/ 구조 포함
의존성 관리 단독 실행 시 외부 라이브러리 수동 포함 필요 /WEB-INF/lib에 JAR 포함 가능
배포 환경 어디서든 실행 가능 (JVM 필요) WAS(Web Application Server) 필요

 

4. 언제 JAR을 쓰고, 언제 WAR를 써야하나?

 

  • JAR 적합한 경우
    • 콘솔 애플리케이션
    • 배치 프로그램
    • 라이브러리 배포용
    • Spring Boot 기반 애플리케이션 (내장 Tomcat으로 실행하므로 jar 권장)
  • WAR 적합한 경우
    • 여러 웹 애플리케이션을 공용 WAS에 배포해야 할 때
    • 전통적인 JSP/서블릿 프로젝트
    • Spring Boot지만 외부 Tomcat, WebLogic 같은 WAS에 배포할 때

5. 정리

 

  • JAR = 실행/라이브러리 패키지
  • WAR = 웹 애플리케이션 패키지
  • JAR는 JVM만 있으면 실행 가능하지만, WAR는 반드시 WAS에 올려야 실행됩니다.
  • 최근에는 Spring Boot의 등장으로, 독립 실행형 웹 애플리케이션을 JAR로 배포하는 경우가 훨씬 많아지고 있습니다.
  • 따라서 단일 서버 실행이나 클라우드 환경에서는 jar가 주로 쓰이고, 기존 레거시 시스템이나 엔터프라이즈 환경에서는 여전히 war 배포가 흔합니다.

 

 

728x90
반응형

'IT Information' 카테고리의 다른 글

[IT Info] 시간복잡도 O(n) vs O(n^2): 데이터 크기가 달라지면 알고리즘의 성능은 어떻게 될까?  (0) 2025.10.15
[IT Info] VPN 연결 오류 해결: '원격 컴퓨터에 연결하지 못했습니다. 이 연결에 대한 네트워크 설정을 변경해야 합니다. '  (0) 2025.03.31
[IT Info] 크로스 브라우징  (10) 2024.10.08
[IT Info] excel, word에 오류가 생겨 제대로 작동할 수 없습니다. (에러 해결)  (4) 2024.09.19
[IT Info] SMS, LMS, MMS 의 특징과 차이  (0) 2024.05.07
'IT Information' 카테고리의 다른 글
  • [IT Info] 시간복잡도 O(n) vs O(n^2): 데이터 크기가 달라지면 알고리즘의 성능은 어떻게 될까?
  • [IT Info] VPN 연결 오류 해결: '원격 컴퓨터에 연결하지 못했습니다. 이 연결에 대한 네트워크 설정을 변경해야 합니다. '
  • [IT Info] 크로스 브라우징
  • [IT Info] excel, word에 오류가 생겨 제대로 작동할 수 없습니다. (에러 해결)
JongTachi
JongTachi
    반응형
  • JongTachi
    JongTachi의 개발 블로그
    JongTachi
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Network (10)
      • Server (19)
        • Web (12)
        • WAS (6)
      • Java (8)
        • JVM (1)
        • Java Syntax (16)
        • IDE (5)
        • Lombok (2)
        • Util (1)
      • FrameWork (8)
        • Spring&SpringBoot (4)
        • MyBatis (4)
      • JSP (3)
      • JavaScript (12)
        • jQuery (3)
        • JSON (3)
      • APM (1)
      • Android (5)
      • VCS(Version Control System) (5)
        • Git (4)
        • SVN (1)
      • IT_Tools (15)
        • Jenkins (2)
        • MobaXterm (2)
        • Jeus (1)
        • DBeaver (3)
      • Certificate (1)
      • Linux (3)
      • DB (14)
        • MariaDB (0)
        • Oracle (8)
        • Redis (2)
      • IT Information (21)
      • Text Editor (2)
        • NotePad (2)
      • 비밀의방 (0)
      • 헬파티 여행 (2)
      • 경제 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JSON
    오라클
    자바스크립트
    HTTP
    mybatis
    IntelliJ
    svn
    보안
    자바
    마이바티스
    db
    JQuery
    디비버
    DBeaver
    Server
    WAS
    Javascript
    상태코드
    인텔리제이
    SQL
    git
    Eclipse
    이클립스
    Linux
    Tomcat
    톰캣
    oracle
    java
    Web
    Redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JongTachi
[IT Info] Jar 파일, War 파일
상단으로

티스토리툴바