1. 개요

이 빠른 사용방법(예제)에서는 Java에서 JAR과 WAR 패키징의 차이점에 중점을 둘 것입니다.

먼저 각 패키징 옵션을 개별적으로 정의합니다. 그런 다음 차이점을 요약하겠습니다.

2. JAR 패키징

간단히 말해서 JAR(또는 Java 아카이브)은 패키지 파일 형식입니다. JAR 파일은 .jar 확장자를 가지며 라이브러리, 리소스 및 메타데이터 파일을 포함할 수 있습니다 .

기본적으로 이것은 압축된 버전의 .class 파일과 컴파일된 Java 라이브러리 및 애플리케이션의 리소스를 포함하는 압축 파일입니다 .

예를 들어 다음은 간단한 JAR 파일 구조입니다.

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

META -INF/MANIFEST.MF 파일에는 아카이브에 저장된 파일에 대한 추가 메타데이터가 포함될 수 있습니다.

jar 명령이나 Maven 과 같은 도구를 사용하여 JAR 파일을 만들 수 있습니다 .

3. WAR 패키징

WAR은 웹 애플리케이션 아카이브 또는 웹 애플리케이션 리소스를 나타냅니다. 이러한 아카이브 파일은 .war 확장자를 가지며 모든 Servlet/JSP 컨테이너에 배포할 수 있는 웹 애플리케이션을 패키징하는 데 사용 됩니다 .

다음은 일반적인 WAR 파일 구조의 예시 레이아웃입니다.

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

내부에는 웹 아카이브에 대한 MANIFEST.MF 의 유용한 정보를 포함하는 META-INF 디렉토리 가 있습니다 . META -INF 디렉토리는 비공개이며 외부에서 접근할 수 없습니다.

반면에 HTML 페이지, 이미지 및 JS 파일을 포함한 모든 정적 웹 리소스가 있는 WEB-INF 공용 디렉토리도 포함합니다. 또한 web.xml 파일, 서블릿 클래스 및 라이브러리가 포함되어 있습니다.

.war 아카이브 를 빌드하기 위해 JAR을 빌드하는 데 사용한 것과 동일한 도구와 명령을 사용할 수 있습니다 .

4. 주요 차이점

그렇다면 이 두 아카이브 유형의 주요 차이점은 무엇입니까?

첫 번째이자 가장 분명한 차이점은 파일 확장자 입니다 . JAR의 확장자는 .jar 이고 WAR 파일의 확장자는 .war 입니다 .

두 번째 주요 차이점은 목적과 작동 방식 입니다 . JAR 파일을 사용하면 라이브러리, 플러그인 또는 모든 종류의 애플리케이션으로 사용하기 위해 여러 파일을 패키징할 수 있습니다. 반면 WAR 파일은 웹 애플리케이션에만 사용됩니다.

아카이브의 구조도 다릅니다. 원하는 구조로 JAR을 만들 수 있습니다. 반대로 WAR에는 WEB-INFMETA-INF 디렉토리가 있는 미리 정의된 구조가 있습니다.

마지막으로 추가 소프트웨어를 사용하지 않고 실행 가능한 JAR 로 빌드하면 명령줄에서 JAR을 실행할 수 있습니다 . 또는 라이브러리로 사용할 수 있습니다. 반대로 WAR을 실행하려면 서버가 필요합니다 .

5. 결론

이 빠른 기사에서는 .jar.war Java 패키징 유형을 비교했습니다 . 그렇게 함으로써 우리는 둘 다 동일한 ZIP 파일 형식을 사용하지만 몇 가지 중요한 차이점이 있다는 점에 주목했습니다.

res – REST with Spring (eBook) (everywhere)