Jar, War, Ear 차이점, 공통점 등 설명

J2EE 애플리케이션에서 모듈은 기능에 따라 JAR, WAR 및 EAR로 패키지된다.

Jar,War,Ear

JAR

  • Java ARchive
  • Java 프로그램의 실행에 필요한 클래스 파일이나 설정 파일이 정리되어 있는 아카이브.
  • Java로 작성한 어플리케이션을 배포할 때에 관련 파일을 1개에 패키징할 때에 이용되고, 실제로는 많은 클래스 라이브러리는 이 형식으로 배포되고 있다.
  • 클래스 파일과 각 클래스들이 사용하는 관련 리소스 파일 및 메타 데이터를 압축한 파일
  • 실제로는 zip 파일 포맷으로 압축이 된다.
  • JRE(JAVA Runtime Environment)가 있으면 실행된다.
    • java -jar {project_name}.jar

WAR

  • Web applicaton ARchive
  • Java의 Web 어플리케이션으로 이용되는 클래스 파일(servlet), 설정 파일(xml), JSP나 HTML 파일, JAR 형식의 라이브러리 등이 압축되어 있는 아카이브.
  • 웹 어플리케이션 설정에 대한 정의 파일 web.xml 이 있다.
  • web.xml이 포함되어 Tomcat 등의 애플리케이션 서버에 WAR 파일을 배포하면, 이 파일을 바탕으로 배포된다.
  • 사전 정의된 구조를 사용한다.
    • WEB-INF, META-INF

EAR

  • Enterprise ARchive
  • Java EE(Java Platform, Enterprise Edition) 기반 애플리케이션의 패키지 형식 확장자.
  • 임의의 수의 WAR 파일이나 EJB 파일, 그리고 이러한 어플리케이션에 필요한 JAR 파일을 포함할 수 있다.
  • 위의 모든 파일(.jar, .war)은 확장자가 .ear(enterprise archive)인 JAR 파일로 패키지되어, Application Server에 배치된다.
  • META-INF 폴더에 포함된 application.xml 파일이 필요하다.

JAR, WAR, EAR 차이점

  • JAR, WAR, EAR 파일의 가장 큰 차이점은 서로 다른 환경을 대상으로 한다는 점이다.
  • 파일의 크기는 EAR > WAR > JAR 이렇게 된다.

JAR, WAR, EAR 공통점

  • 모두 Java 커뮤니티의 사양에 따라 정의된 zip 형식의 패키지(복수의 파일을 정리한 아카이브)이다.
  • Java Jar(java -jar)를 이용해 생성된 압축파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성 파일 등)을 패키징 한 것이다.

정리

즉, Jar와 War는 사용되는 목적에 따라 압축되는 파일 범위만 다른 같은 압축 파일이다. 최근에는 Spring Boot 등의 사용으로 인해 웹 애플리케이션이이어도, 바로 실행 가능한 JAR 파일를 사용하는 경우가 많다.




최종 수정 : 2024-01-18