JAR / WAR 차이점 및 특징

Updated:

JAR / WAR

일단 두 파일 모두 jar 툴을 사용한 압축 파일인데 사용 목적이 다릅니다.

JAR (Java Archive)

.jar 파일은 Class 와 같은 Java 리소스와 속성 파일, 라이브러리 파일이 포함되어 있습니다. 쉽게 말하면 Java 어플리케이션이 동작할 수 있도록 Java 프로젝트를 압축한 파일이라 생각하면 됩니다.

JAR 파일은 원하는 구조로 구성이 가능하며 JDK 에 포함하고 있는 JRE 만 가지고도 실행이 가능합니다.

아래는 예시로 나타낸 JAR 파일 구조입니다.

META-INF/
    MANIFEST.MF
com/
    baeldung/
        MyApplication.class

WAR (Web Application Archive)

.war 파일은 servlet, jsp, jar, html 등등 Servlet Context 파일이 포함되어 있습니다. 즉, JAR 파일과 달리 웹 어플리케이션을 지원하기 위한 압축 방식입니다.

JAR 파일과 달리 WAR 파일은 WEB-INF 와 META-INF 디렉토리로 정의된 구조를 사용하며, WAR 파일을 실행하기 위해선 Tomcat, Apache 와 같은 Web Server 나 WAS 가 필요합니다.

아래는 예시로 나타낸 WAR 파일 구조입니다.

META-INF/
    MANIFEST.MF
WEB-INF/
    web.xml
    jsp/
        helloWorld.jsp
    classes/
        static/
        templates/
        application.properties
    lib/
        // *.jar files as libs

EAR (Enterprise Archive)

추가로 EAR 은 Java EE(Enterprise Edition) 에 쓰이는 파일 형식으로 한 개 이상의 모듈을 단일 아카이브로 패키징 하여 어플리케이션 서버에 동시에 일관적으로 올리기 위해 사용하는 포맷입니다.

JAR vs WAR vs EAR

세 파일의 차이를 알아보기위 해선 아래 그림이 가장 적절하다고 생각됩니다.

image

References

  • https://web.archive.org/web/20120626012843/http://java.sun.com/developer/Books/javaprogramming/JAR/basics
  • https://web.archive.org/web/20120626020019/http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html
  • https://www.baeldung.com/java-jar-war-packaging
  • https://simuing.tistory.com/269

Leave a comment