새소식

반응형
Java/Spring

JAR, WAR 차이점 및 특징

  • -
반응형

JAR(Java Archive), WAR(Web Application Archive) 모두 Java의 jar 옵션(java -jar)을 이용하여 생성된

압축 파일이며, 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일 등)들을

패키징 해주는 역할이다.

 

JAR (Java Archive)

.jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있다.

쉽게 말해 Java 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일이다.

 

사용처 : Java 라이브러리, 스탠드얼론 Java 애플리케이션, 의존성 패키지 등

 

보통 jar 는 JAVA 라이브러리르 제공하기 위해 많이 사용한다.

 

.jar 파일은 원하는 구조로 구성이 가능하며 JDK(Java Development Kit)에 포함하고 있는

JRE(Java Runtime Environment) 만 가지고도 실행이 가능하다.

 

  • Java 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일이다.
  • Class 파일과 같은 Java 리소스, 속성파일, 라이브러리 파일을 포함한다.
  • JDK 에 포함하고 있는 JRE 만 가지고도 실행이 가능하다.

 

스프링 공식문서에서 소개하는 JAR 파일은 아래 이미지처럼 BOOT-INF, META-INF, org 로 이루어져 있다.

출처 : https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

 

META-INF

프로젝트 매니페스트 파일(MANIFEST.MF)을 포함하는 폴더이다. 매니페스트 파일은 파일 그룹을 위한

메타데이터(이름, 버전, 라이선스, 프로그램의 구성 등)을 포함하는 파일이다.

 

매니페스트 파일은 JAR 파일에 패키징된 파일들에 정보를 가지고 있는 특별한 파일이다.

 

org

org 폴더 안에는 위에서 설명한 Springboot loader classes 모듈이 저장되어 있다.

 

BOOT- INF

개발자가 직접 작성한 클래스 파일들과 의존성 주입을 통해 생성된 jar 파일(lib) 들로 구성되어 있다.

 

 

 

WAR(Web Application Archive)

.war 확장자 파일은 Servlet / jsp 컨테이너에 배치할 수 있는 웹 어플리케이션 압축 파일 포맷입니다.

JSP, SERVLET, JAR, CLASS, XML, HTML, JAVASCRIPT 등 웹 응용 프로그램을 위한 포맷이기 때문에

웹 관련 자원만 포함하고 있다.

 

.jar 과 달리 원하는 구조로 구성이 불가능하다.

.war 은 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조로 사용하며 WAR 파일을 실행하기 위해선

Tomcat, Weblogic, Websphere 등의 웹 서버(Web Server) 또는 웹 컨테이너(WAS) 가 필요하다.

 

사용처 : Java 기반의 웹 애플리케이션 서버나 서블릿 컨테이너 (예: Tomcat, JBoss, WebLogic 등)에서 실행되는 웹 애플리케이션에 사용.

 

서버에 웹 어플리케이션을 배포하기 위해 WAR 를 사용한다.

 

WAR 파일도 Java의 JAR 옵션(java -jar) 을 이용해 생성하는 JAR 파일의 일종으로 웹 어플리케이션 전체를 

패키징하기 위한 JAR 파일로 생각하면 된다.

 

  • Servlet / Jsp 컨테이너에 배치할 수 있는 웹 어플리케이션 압축 파일 포맷
  • 웹 관련 자원만 포함하고 있다. (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
  • 사전 정의된 구조를 사용한다. (WEB-INF, META-INF)
  • 실행하기 위해선 별도의 웹서버(Web Server) 또는 웹 컨테이너(WAS)가 필요하다.

 

스프링 공식문서에서 소개하는 WAR 파일은 아래 이미지처럼 META-INF, org, WEB-INF 로 이루어져 있다.

JAR 파일구조와 다른점은 BOOT-INF 대신 WEB-INF 가 있다. 웹 어플리케이션의 사전 정의된 구조를 따르기 위해서

WEB-INF를 사용한다.

출처 : https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

 

WEB-INF

개발자가 직접 입력한 class와 jar 파일, JSP 일 경우 view 파일들까지 포함되어 있는 디렉터리다.

반응형

'Java > Spring' 카테고리의 다른 글

Jackson 라이브러리 ObjectMapper(readValue, writeValueAsString)  (1) 2022.09.21
Lombok @Builder  (0) 2022.09.14
File.separator  (0) 2022.08.24
@Controller, @RestController  (0) 2022.08.09
Spring Security Config 설정  (1) 2022.08.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.