CS

JAR와 WAR

baek-dev 2025. 1. 26. 14:49

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