1. 개요

이 사용방법(예제)에서는 Java JAR(Java ARchive), WAR(Web Application ARchive) 및 EAR(Enterprise Application aRchive) 아티팩트 파일 간의 차이점을 살펴보겠습니다.

각 파일 형식이 수행하는 작업과 이를 사용하는 방법에 대해 설명합니다.

2. 자바 아티팩트 파일 형식

Java 사양에는 여러 유형의 아티팩트 파일이 포함되어 있습니다. 가장 눈에 띄는 것은 JAR, WAR 및 EAR이지만 다른 것들도 있습니다. JAR로 시작하여 각 유형은 각각 다른 유형을 기반으로 빌드됩니다.

JAR 파일 형식은 JavaSE 사양의 일부이지만 WAR 및 EAR 파일 자체는 현재 JakartaEE로 알려진 JavaEE의 일부입니다.

3. JAR 파일

아시 다시피 JAR 파일은 Java 애플리케이션의 기본 아티팩트입니다 .

기본적으로 확장자는 .jar.zip 파일 입니다 . 클래스, 리소스, 메타 정보 파일 등의 내용을 포함합니다.

jar 프로그램 으로 JAR 파일을 만들고 JRE(Java Runtime Environment)만 있는 모든 시스템에서 java -jar 명령을 사용하여 실행할 수 있습니다.

4. 전쟁 파일

WAR 파일은 Java 웹 애플리케이션 번들링 에 사용됩니다 .

또한 후드 아래의 .zip 파일이며 JAR 파일 형식의 확장입니다.

클래스 및 리소스와 함께 WAR 파일에는 라이브러리, JSP 파일 , Java 서블릿 및 모든 유형의 정적 웹 파일 (HTML, CSS, Javascript 등) 형식의 다른 JAR이 포함될 수 있습니다 .

JakartaEE는 올바른 형식의 WAR 파일이 web.xml 파일을 포함하는 WEB-INF 디렉토리를 포함해야 한다고 지정합니다 . 여기에서 각 서블릿의 웹 경로 또는 세션 시간 초과 양과 같은 웹 응용 프로그램의 구조 및 구성을 선언합니다.

JAR과 달리 WAR 파일은 독립 실행형 애플리케이션으로 실행할 수 없으며 서블릿 컨테이너 또는 애플리케이션 서버와 같은 다른 애플리케이션의 구성 요소로만 사용할 수 있습니다 .

WAR 파일을 서버에 넣는 과정을 애플리케이션 배포 라고 합니다 . 일반적인 애플리케이션 서버에는 Tomcat, Jetty 및 Wildfly가 포함됩니다.

5. 귀 파일

EAR 파일은 여러 모듈로 구성된 엔터프라이즈 애플리케이션에 사용됩니다.

여러 유형의 모듈이 있지만 가장 일반적인 것은 웹 모듈(기본적으로 WAR 파일)과 Enterprise Java Bean 클래스를 포함하는 JAR 파일의 특수 유형인 EJB 모듈 입니다.

WAR과 마찬가지로 EAR은 JAR 확장이며 루트 META-INF 디렉토리 아래에 application.xml 이라는 특수 XML 파일을 포함해야 합니다 . 이 파일에서는 엔터프라이즈 애플리케이션을 설명하고 해당 모듈을 나열합니다. 또한 전체 앱에 대한 Security 역할을 추가할 수 있습니다.

WAR과 마찬가지로 EAR 파일도 독립 실행형 애플리케이션으로 실행할 수 없습니다. 애플리케이션 서버에 배포해야 합니다.

그러나 이 경우 모든 유형이 호환되는 것은 아닙니다. Wildfly와 같은 JakartaEE 기술을 지원하는 서버를 사용해야 하지만 Jetty는 사용할 수 없습니다. Tomcat의 경우에도 호환되지 않지만 호환되는 TomEE라는 다른 버전이 있습니다.

EAR 형식의 장점은 복잡한 다중 구성 요소 응용 프로그램을 단일 파일에 지정할 수 있다는 것입니다. 또한 공통 리소스를 공유하여 중복을 방지할 수 있습니다. 마지막으로 단일 파일 형식은 배포 오류를 제거하므로 매우 유용합니다.

6. 결론

이 기사에서는 WAR과 EAR 파일의 차이점을 살펴보았습니다. 우리는 각 파일의 구조를 배웠고 일반적인 사용 사례에 대해 논의했습니다. 마지막으로 각 유형의 아티팩트를 사용하는 방법을 살펴보았습니다.

res – REST with Spring (eBook) (everywhere)