Jar, War, Ear 차이점, 공통점 등 설명
J2EE 애플리케이션에서 모듈은 기능에 따라 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