JAR (Java Archive) 와 WAR (Web Application Archive)
두 가지 모두 Java 애플리케이션을 패키징하는 방식입니다.
JAR (Java Archive)
- JAR 파일이란?: JAR 파일은 Java 애플리케이션을 하나의 파일로 묶은 것입니다. 주로 독립 실행형 애플리케이션을 위한 파일로, 필요한 라이브러리와 자원을 포함하여 쉽게 배포할 수 있습니다.
WAR (Web Application Archive)
- WAR 파일이란?: WAR 파일은 웹 애플리케이션을 패키징한 파일로, JSP, 서블릿, HTML, CSS, JavaScript 등의 웹 구성 요소를 포함합니다. 이 파일은 웹 서버나 애플리케이션 서버에서 실행됩니다.
1. JAR
장점
- 독립 실행 가능: Java 애플리케이션을 패키징하고 실행 가능한 파일로 만들어 쉽게 실행할 수 있습니다.
- 포함된 종속성: 클래스, 리소스, 라이브러리를 포함하여 배포와 전달이 용이합니다.
- JVM 직접 실행: main 메서드를 포함하여 별도의 서버가 필요 없습니다.
단점
- 웹 기능 제한: JSP나 서블릿 같은 웹 표준 기능을 활용하기 어렵습니다.
- 동적 웹 컨텐츠 제한: 웹 애플리케이션에서 동적인 웹 컨텐츠 생성 및 관리가 제한적입니다.
2. WAR
장점
- 웹 애플리케이션 최적화: JSP, 서블릿, 필터, 리스너 등을 포함한 웹 애플리케이션을 패키징합니다.
- 웹 기능 활용: 다양한 웹 기능과 서버 환경을 활용할 수 있습니다.
- 서버와의 일관성 유지: 이미 설치된 Tomcat 서버와 환경을 일치시켜 운영할 수 있습니다.
- 관리 용이성: 여러 애플리케이션을 하나의 Tomcat 서버에서 관리할 수 있습니다.
- 전통적 배포 방식: 대부분의 서버 환경에서는 WAR 파일을 사용하여 배포합니다.
단점
- 웹 컨테이너 필요: 특정 웹 컨테이너(예: Tomcat)에서 실행해야 합니다.
- 크기와 복잡성: JAR 파일보다 크기가 크고 배포가 번거로울 수 있습니다.
3. JAR와 WAR 차이점 요약
- JAR: 독립 실행 가능한 Java 애플리케이션 패키징, main 메서드 포함, 별도 서버 불필요.
- WAR: 웹 애플리케이션 패키징, JSP/서블릿 포함, 웹 컨테이너 필요.
4. JAR, WAR 선택 시 고려 사항
- 프로젝트 유형: 독립 애플리케이션이면 JAR, 웹 애플리케이션이면 WAR.
- 배포 환경: 서버 없이 실행하려면 JAR, 웹 컨테이너에서 실행해야 하면 WAR.
- 기능 요구사항: 일반 애플리케이션은 JAR, 웹 기능 필요하면 WAR.
- 확장성: WAR은 높은 확장성, JAR은 특정 환경에 종속되지 않음.
- 개발환경: 개발 도구와 프레임워크에 따라 선택.
배포 시 고려 사항
- WAS(Tomcat) 설치 여부: 배포 시 서버에 WAS(Tomcat)가 설치되어 있다면 WAR 파일로 배포하는 것이 좋습니다. 서버에 WAS가 없다면, JAR 파일로 패키징하여 배포합니다.
주의
- 혼용 불가: 동일 프로젝트에서 JAR와 WAR 파일을 함께 사용할 수 없습니다.
- 예외: WAR 파일에 JAR 파일을 포함하거나 클래스 경로에 추가하는 것은 가능.