728x90
반응형
개발을 하다 보면 .jar와 .war라는 확장자를 자주 접하게 됩니다. 둘 다 Java 세계에서 중요한 배포 단위이지만, 언제 어떤 걸 써야 하는지 헷갈리기 쉽죠. 이번 글에서는 정의, 목적, 특징, 사용 방법, 차이점을 한눈에 정리해보겠습니다.
1. What is Jar File?
JAR (Java ARchive) 는 Java 클래스 파일, 리소스(이미지, 설정파일 등), 메타데이터를 하나의 압축 파일로 묶어 놓은 패키지입니다. 쉽게 말하면 Java 프로젝트 실행 파일이라고 할 수 있습니다.
1) 목적
- 여러 .class 파일과 라이브러리를 하나의 실행 단위로 묶기 위함.
- 다른 프로젝트에서 쉽게 재사용할 수 있도록 배포.
- 라이브러리 관리 및 의존성 처리를 단순화.
2) 특징
- ZIP 포맷 기반(즉, unzip으로도 열 수 있음).
- META-INF/MANIFEST.MF 파일을 통해 메인 클래스 지정 가능.
- 실행 가능한 JAR는 java -jar 파일명.jar으로 바로 실행 가능.
3) 사용방법
# jar 생성
jar cvf app.jar -C out/production/MyProject .
# 실행
java -jar app.jar
2. What is War File?
WAR (Web Application Archive) 는 웹 애플리케이션을 배포하기 위한 아카이브 파일입니다.
즉, 서블릿/JSP 기반 웹 프로젝트를 Tomcat, Jetty, JBoss 같은 서블릿 컨테이너에서 실행할 수 있도록 묶어놓은 배포 단위입니다.
1) 목적
- 웹 애플리케이션을 표준화된 구조로 묶어, WAS(Web Application Server)에 쉽게 배포.
- JSP, 서블릿, HTML, CSS, JS, 라이브러리(JAR 포함) 등을 한 번에 배포.
2) 특징
- 특정 디렉토리 구조를 따라야 함.
/WEB-INF/
web.xml (웹 애플리케이션 설정 파일)
classes/ (컴파일된 .class 파일)
lib/ (필요한 JAR 라이브러리)
- 단독 실행 불가능 → WAS에 배포해야 실행됨.
- 주로 엔터프라이즈 애플리케이션, 대규모 웹 서비스에서 사용.
3) 사용방법
# war 생성 (예: Maven/Gradle 빌드 시 자동 생성)
mvn package # target/myapp.war 생성
# Tomcat 배포 (webapps 폴더에 복사)
cp target/myapp.war $TOMCAT_HOME/webapps/
# 배포 후 Tomcat 자동 해제 및 실행
http://localhost:8080/myapp
3. Jar와 War 차이점 비교
| 구분 | JAR 파일 | WAR 파일 |
| 확장자 | .jar | .war |
| 의미 | Java 실행/라이브러리 패키지 | 웹 애플리케이션 패키지 |
| 실행 방식 | java -jar 로 직접 실행 가능 | WAS(Tomcat, JBoss 등)에 배포 필요 |
| 용도 | 라이브러리 제공, 콘솔 앱, 스프링 부트 실행 파일 | JSP/서블릿 기반 웹 앱 배포 |
| 구조 | 자유로운 구조 | 반드시 /WEB-INF/ 구조 포함 |
| 의존성 관리 | 단독 실행 시 외부 라이브러리 수동 포함 필요 | /WEB-INF/lib에 JAR 포함 가능 |
| 배포 환경 | 어디서든 실행 가능 (JVM 필요) | WAS(Web Application Server) 필요 |
4. 언제 JAR을 쓰고, 언제 WAR를 써야하나?
- JAR 적합한 경우
- 콘솔 애플리케이션
- 배치 프로그램
- 라이브러리 배포용
- Spring Boot 기반 애플리케이션 (내장 Tomcat으로 실행하므로 jar 권장)
- WAR 적합한 경우
- 여러 웹 애플리케이션을 공용 WAS에 배포해야 할 때
- 전통적인 JSP/서블릿 프로젝트
- Spring Boot지만 외부 Tomcat, WebLogic 같은 WAS에 배포할 때
5. 정리
- JAR = 실행/라이브러리 패키지
- WAR = 웹 애플리케이션 패키지
- JAR는 JVM만 있으면 실행 가능하지만, WAR는 반드시 WAS에 올려야 실행됩니다.
- 최근에는 Spring Boot의 등장으로, 독립 실행형 웹 애플리케이션을 JAR로 배포하는 경우가 훨씬 많아지고 있습니다.
- 따라서 단일 서버 실행이나 클라우드 환경에서는 jar가 주로 쓰이고, 기존 레거시 시스템이나 엔터프라이즈 환경에서는 여전히 war 배포가 흔합니다.
728x90
반응형
'IT Information' 카테고리의 다른 글
| [IT Info] 시간복잡도 O(n) vs O(n^2): 데이터 크기가 달라지면 알고리즘의 성능은 어떻게 될까? (0) | 2025.10.15 |
|---|---|
| [IT Info] VPN 연결 오류 해결: '원격 컴퓨터에 연결하지 못했습니다. 이 연결에 대한 네트워크 설정을 변경해야 합니다. ' (0) | 2025.03.31 |
| [IT Info] 크로스 브라우징 (10) | 2024.10.08 |
| [IT Info] excel, word에 오류가 생겨 제대로 작동할 수 없습니다. (에러 해결) (4) | 2024.09.19 |
| [IT Info] SMS, LMS, MMS 의 특징과 차이 (0) | 2024.05.07 |