본문 바로가기
Java Study

jar, war 설명과 차이

by xogns93 2024. 10. 9.

JARWAR는 모두 자바 애플리케이션을 패키징하는 형식이지만, 용도와 사용되는 환경이 다릅니다. 각각의 개념과 차이를 살펴보겠습니다.

1. JAR (Java ARchive)

개념:

  • JAR 파일은 자바 클래스 파일, 메타데이터, 라이브러리 파일을 하나의 압축 파일로 묶어 배포할 수 있도록 만든 패키징 형식입니다. 주로 자바 데스크탑 애플리케이션이나 라이브러리를 배포할 때 사용됩니다.
  • 일반적인 압축 파일(.zip)과 유사하지만, 자바에서 동작하는 애플리케이션을 포함하고 있습니다.

특징:

  • 자바 애플리케이션을 패키징하고 배포하는 데 주로 사용됩니다.
  • 라이브러리, 리소스 파일(이미지, 속성 파일 등), 클래스 파일 등이 포함될 수 있습니다.
  • JAR 파일은 독립 실행 애플리케이션으로 실행될 수 있습니다. 이를 위해서는 META-INF 디렉터리 안에 MANIFEST.MF 파일을 포함하고 있어야 하며, 이 파일에 메인 클래스가 명시되어야 합니다.

JAR 파일의 주요 용도:

  • 독립 실행 애플리케이션: JAR 파일을 통해 데스크탑 애플리케이션을 쉽게 배포하고 실행할 수 있습니다.
  • 라이브러리: 여러 자바 라이브러리를 묶어 배포하거나 다른 애플리케이션에서 재사용하기 위한 패키지로 사용됩니다.

JAR 파일 예시:

MyApplication.jar
 |- META-INF/
    |- MANIFEST.MF
 |- com/
    |- example/
       |- Main.class
       |- Helper.class
 |- resources/
    |- config.properties
  • MANIFEST.MF 파일에는 메인 클래스(Main-Class)가 정의되어 있어야 실행이 가능합니다.

JAR 파일 실행:

java -jar MyApplication.jar

2. WAR (Web Application ARchive)

개념:

  • WAR 파일은 자바 웹 애플리케이션을 패키징하는 형식입니다. 웹 애플리케이션에 필요한 서블릿, JSP, HTML, CSS, 자바스크립트 파일, 그리고 자바 클래스 파일들을 포함하여 웹 서버(예: Tomcat, Jetty)에 배포할 수 있습니다.
  • WAR 파일은 주로 서버 환경에서 동작하는 애플리케이션을 배포하는 데 사용됩니다.

특징:

  • 웹 애플리케이션을 웹 서버나 애플리케이션 서버에 배포하기 위한 패키지입니다.
  • 웹 애플리케이션 관련 파일들을 /WEB-INF 디렉터리 안에 구조적으로 포함합니다.
  • WEB-INF/web.xml 파일에는 서블릿, 필터, 리스너 등의 설정이 정의되어 있으며, 배포 후 서버에서 애플리케이션이 동작할 수 있도록 합니다.

WAR 파일의 주요 용도:

  • 웹 애플리케이션 배포: 자바 기반의 동적 웹 애플리케이션(서블릿, JSP 등)을 패키징하여 배포할 때 사용됩니다.
  • 서버 배포: Tomcat과 같은 웹 서버나 애플리케이션 서버에 쉽게 배포할 수 있습니다.

WAR 파일 예시:

MyWebApp.war
 |- index.jsp
 |- styles.css
 |- WEB-INF/
    |- web.xml
    |- classes/
       |- com/
          |- example/
             |- MyServlet.class
    |- lib/
       |- some-library.jar
  • WEB-INF/web.xml 파일은 웹 애플리케이션의 서블릿 설정, 필터, 리스너 등을 정의합니다.
  • classes/ 디렉터리에는 컴파일된 자바 클래스 파일들이 포함되고, lib/ 디렉터리에는 웹 애플리케이션에서 사용하는 라이브러리 JAR 파일들이 위치합니다.

WAR 파일 배포:

WAR 파일은 직접 실행하지 않고, 웹 서버에 배포되어 동작합니다. 예를 들어, Tomcat 서버의 webapps 디렉터리에 WAR 파일을 복사하면 서버가 자동으로 이를 배포하고 실행합니다.

3. JAR와 WAR의 차이점

특성 JAR WAR
확장자 .jar .war
용도 자바 라이브러리 또는 독립 실행 애플리케이션 자바 웹 애플리케이션 (서블릿, JSP 등)
구조 클래스 파일, 리소스 파일, META-INF 폴더 클래스 파일, JSP 파일, 웹 리소스, WEB-INF 폴더
실행 방식 java -jar 명령으로 실행 가능 웹 서버나 애플리케이션 서버에 배포하여 실행
배포 환경 데스크탑 애플리케이션 또는 라이브러리 웹 서버 (예: Tomcat, Jetty)
웹 관련 파일 포함 포함하지 않음 HTML, JSP, CSS, 자바스크립트 등 포함 가능

요약

  • JAR: 자바 애플리케이션 및 라이브러리를 패키징하는 포맷으로, 독립 실행 가능한 애플리케이션이나 라이브러리 배포에 주로 사용됩니다.
  • WAR: 자바 웹 애플리케이션을 패키징하는 포맷으로, 서블릿, JSP, 웹 리소스 파일 등을 포함해 서버에 배포할 수 있습니다.

따라서 JAR는 주로 데스크탑 애플리케이션이나 라이브러리 배포에 사용되며, WAR는 웹 애플리케이션을 배포하기 위한 형식입니다.