본문 바로가기
[JAVA]

Jar, War, Ear에 대한 정리

by 팡펑퐁 2023. 5. 12.
728x90

JAR(Java ARchive)

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

 

 

WAR(Web application 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 파일을 포함할 수 있다.
  • 위의 모든 파일은 확장자가 .ear(enterprise archive)인 JAR 파일로 패키지 되어 애플리케이션 서버에 배치된다.
  • META-INF 폴더에 포함된 application.xml 파일이 필요하다.

 

 

JAR, WAR, EAR 공통점

  • Java 커뮤니티의 사양에 따라 정의된 zip 형식의 패키지(여러 개의 파일을 정리한 아카이브)이다.
  • java -jar를 이용해 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일을 패키징 한 것이다.

 

 

JAR, WAR, EAR 차이점

서로 다른 환경을 대상으로 한다.

  • JAR는 Java의 설치만 필요하다.
  • WAR는 Java EE Web Profile 호환 응용 프로그램 서버만 실행하면 된다.
  • EAR는 완전한 Java EE(Java Platform, Enterprise Edition) 또는 WebSphere, JBoss 같은 Jakarta Enterprise Edition (EE) 호환 애플리케이션 서버가 필요하다.

 

내부 제한 사항 및 요구사항이 다르다.

  • JAR는 요구사항이 없다.
  • WAR는 WEB-INF 폴더에 포함된 web.xml 파일이 있어야 한다.
  • EAR는 META-INF 폴더에 application.xml 파일이 있어야 한다.

 

 

 

참고

https://simuing.tistory.com/entry/JAVA-EAR-JAR-WAR-차이점

https://www.devkuma.com/docs/java/jar-war-ear/

https://kmkunk.tistory.com/141

728x90