JAR
와 WAR
는 모두 자바 애플리케이션을 패키징하는 형식이지만, 용도와 사용되는 환경이 다릅니다. 각각의 개념과 차이를 살펴보겠습니다.
1. JAR (Java ARchive)
개념:
JAR
파일은 자바 클래스 파일, 메타데이터, 라이브러리 파일을 하나의 압축 파일로 묶어 배포할 수 있도록 만든 패키징 형식입니다. 주로 자바 데스크탑 애플리케이션이나 라이브러리를 배포할 때 사용됩니다.- 일반적인 압축 파일(
.zip
)과 유사하지만, 자바에서 동작하는 애플리케이션을 포함하고 있습니다.
특징:
- 자바 애플리케이션을 패키징하고 배포하는 데 주로 사용됩니다.
- 라이브러리, 리소스 파일(이미지, 속성 파일 등), 클래스 파일 등이 포함될 수 있습니다.
- JAR 파일은 독립 실행 애플리케이션으로 실행될 수 있습니다. 이를 위해서는
META-INF
디렉터리 안에MANIFEST.MF
파일을 포함하고 있어야 하며, 이 파일에 메인 클래스가 명시되어야 합니다.
JAR 파일의 주요 용도:
- 독립 실행 애플리케이션: JAR 파일을 통해 데스크탑 애플리케이션을 쉽게 배포하고 실행할 수 있습니다.
- 라이브러리: 여러 자바 라이브러리를 묶어 배포하거나 다른 애플리케이션에서 재사용하기 위한 패키지로 사용됩니다.
JAR 파일 예시:
MyApplication.jar
|- META-INF/
|- MANIFEST.MF
|- com/
|- example/
|- Main.class
|- Helper.class
|- resources/
|- config.properties
MANIFEST.MF
파일에는 메인 클래스(Main-Class
)가 정의되어 있어야 실행이 가능합니다.
JAR 파일 실행:
java -jar MyApplication.jar
2. WAR (Web Application ARchive)
개념:
WAR
파일은 자바 웹 애플리케이션을 패키징하는 형식입니다. 웹 애플리케이션에 필요한 서블릿, JSP, HTML, CSS, 자바스크립트 파일, 그리고 자바 클래스 파일들을 포함하여 웹 서버(예: Tomcat, Jetty)에 배포할 수 있습니다.WAR
파일은 주로 서버 환경에서 동작하는 애플리케이션을 배포하는 데 사용됩니다.
특징:
- 웹 애플리케이션을 웹 서버나 애플리케이션 서버에 배포하기 위한 패키지입니다.
- 웹 애플리케이션 관련 파일들을
/WEB-INF
디렉터리 안에 구조적으로 포함합니다. WEB-INF/web.xml
파일에는 서블릿, 필터, 리스너 등의 설정이 정의되어 있으며, 배포 후 서버에서 애플리케이션이 동작할 수 있도록 합니다.
WAR 파일의 주요 용도:
- 웹 애플리케이션 배포: 자바 기반의 동적 웹 애플리케이션(서블릿, JSP 등)을 패키징하여 배포할 때 사용됩니다.
- 서버 배포: Tomcat과 같은 웹 서버나 애플리케이션 서버에 쉽게 배포할 수 있습니다.
WAR 파일 예시:
MyWebApp.war
|- index.jsp
|- styles.css
|- WEB-INF/
|- web.xml
|- classes/
|- com/
|- example/
|- MyServlet.class
|- lib/
|- some-library.jar
WEB-INF/web.xml
파일은 웹 애플리케이션의 서블릿 설정, 필터, 리스너 등을 정의합니다.classes/
디렉터리에는 컴파일된 자바 클래스 파일들이 포함되고,lib/
디렉터리에는 웹 애플리케이션에서 사용하는 라이브러리 JAR 파일들이 위치합니다.
WAR 파일 배포:
WAR 파일은 직접 실행하지 않고, 웹 서버에 배포되어 동작합니다. 예를 들어, Tomcat 서버의 webapps
디렉터리에 WAR 파일을 복사하면 서버가 자동으로 이를 배포하고 실행합니다.
3. JAR와 WAR의 차이점
특성 | JAR | WAR |
---|---|---|
확장자 | .jar |
.war |
용도 | 자바 라이브러리 또는 독립 실행 애플리케이션 | 자바 웹 애플리케이션 (서블릿, JSP 등) |
구조 | 클래스 파일, 리소스 파일, META-INF 폴더 | 클래스 파일, JSP 파일, 웹 리소스, WEB-INF 폴더 |
실행 방식 | java -jar 명령으로 실행 가능 |
웹 서버나 애플리케이션 서버에 배포하여 실행 |
배포 환경 | 데스크탑 애플리케이션 또는 라이브러리 | 웹 서버 (예: Tomcat, Jetty) |
웹 관련 파일 포함 | 포함하지 않음 | HTML, JSP, CSS, 자바스크립트 등 포함 가능 |
요약
- JAR: 자바 애플리케이션 및 라이브러리를 패키징하는 포맷으로, 독립 실행 가능한 애플리케이션이나 라이브러리 배포에 주로 사용됩니다.
- WAR: 자바 웹 애플리케이션을 패키징하는 포맷으로, 서블릿, JSP, 웹 리소스 파일 등을 포함해 서버에 배포할 수 있습니다.
따라서 JAR는 주로 데스크탑 애플리케이션이나 라이브러리 배포에 사용되며, WAR는 웹 애플리케이션을 배포하기 위한 형식입니다.
'Java Study' 카테고리의 다른 글
Stream (0) | 2024.11.05 |
---|---|
Shallow copy와 Deep copy (0) | 2024.09.19 |
어그리게이션(Aggregation)과 컴포지션(Composition) (0) | 2024.08.21 |
파라미터화된 타입(Parameterized Type)과 원시 타입(Raw Type) (0) | 2024.08.19 |
제네릭 타입 매개변수(T)와 와일드카드(?)의 역할 (0) | 2024.08.19 |