JAR와 WAR
1. JAR (Java Archive)
JAR은 Java 애플리케이션에서 사용하는 압축 파일 포맷임.
주로 Java 클래스 파일과 관련 리소스(이미지, 설정 파일 등)를 하나의 파일로 묶어 배포하거나 실행 가능하도록 만들어줌.
• JAR의 구조
• META-INF/: JAR 파일의 메타데이터가 포함됨.
• MANIFEST.MF: 애플리케이션 정보(메인 클래스, 클래스패스 등)가 기록됨.
• 애플리케이션 코드와 리소스 파일들이 포함됨.
• JAR의 특징
• 일반 Java 애플리케이션에서 주로 사용됨.
• JAR 파일은 독립 실행 가능할 수 있음. (예: java -jar MyApp.jar)
• 라이브러리 배포에도 사용됨. 다른 프로젝트에서 재사용하기 위해 공통 코드를 묶어 제공.
• JAR의 사용 사례
• 단순한 데스크톱 애플리케이션.
• API나 라이브러리 패키징.
2. WAR (Web Application Archive)
WAR은 Java 웹 애플리케이션을 배포하기 위한 압축 파일 포맷임.
주로 Java EE 기반 애플리케이션을 배포할 때 사용되며, 웹 서버 또는 애플리케이션 서버에서 실행 가능함.
• WAR의 구조
• WEB-INF/:
• web.xml: 서블릿 설정 및 애플리케이션 정보를 정의하는 배포 설명자.
• classes/: Java 클래스 파일이 저장됨.
• lib/: 애플리케이션에서 사용하는 JAR 파일(의존성 라이브러리)이 포함됨.
• 정적 리소스: HTML, CSS, JS 파일 등이 포함됨.
• JSP 파일: 서버에서 실행되는 동적 웹 페이지 파일.
• WAR의 특징
• 웹 애플리케이션을 패키징하기 위해 설계됨.
• WAS(Web Application Server)에서 실행되며, Tomcat, JBoss, WebLogic 등이 이를 처리함.
• Java 서블릿, JSP 기반 애플리케이션에서 사용.
• WAR의 사용 사례
• Spring MVC, Spring Boot 기반의 대규모 웹 애플리케이션.
• 엔터프라이즈급 Java 애플리케이션.
JAR와 WAR의 주요 차이점
특징 | JAR | WAR |
목적 | 일반 Java 애플리케이션 실행 및 라이브러리 배포 | Java 웹 애플리케이션 배포 |
구조 | 단순. Java 클래스와 리소스 파일 포함 | 복잡. WEB-INF, 정적 리소스, JSP 포함 |
사용 환경 | 독립 실행 가능하거나 라이브러리로 사용 | 웹 서버 또는 애플리케이션 서버에서 실행 |
실행 방식 | java -jar 명령어로 실행 가능 | WAS에서 배포하여 실행 |
의존성 관리 | 직접 포함하거나 외부 관리 도구 사용 | JAR 파일로 의존성을 포함하여 WEB-INF/lib에 저장 |
Spring Boot와 JAR/WAR
• Spring Boot는 기본적으로 JAR로 패키징되도록 설계됨.
이는 내장 Tomcat 서버를 포함하기 때문에, 독립 실행 가능한 애플리케이션으로 쉽게 배포 가능함.
• 하지만 필요에 따라 WAR로 패키징하여 기존의 WAS(Tomcat, JBoss 등)에 배포할 수도 있음.
JAR vs WAR in Spring Boot
• JAR: 독립 실행형 애플리케이션.
• WAR: 외부 WAS에 배포할 때 사용.
정리
• JAR: Java 애플리케이션 및 라이브러리를 패키징하기 위한 파일 포맷.
• WAR: Java 웹 애플리케이션을 패키징하기 위한 파일 포맷.
• Spring Boot는 기본적으로 JAR 패키징을 사용하지만, 필요 시 WAR 패키징도 지원함.
출처 : ChatGPT
'CS' 카테고리의 다른 글
CORS (Cross-Origin Resource Sharing) (0) | 2025.01.29 |
---|---|
세션 쿠키 캐시 토큰 페킷 (1) | 2025.01.27 |
상태성(Stateful)과 무상태성(Stateless) (0) | 2025.01.25 |
CSRF (0) | 2025.01.19 |
HTTP, HTTPS (0) | 2025.01.15 |