관리 메뉴

JIE0025

jar 와 war의 차이는 무엇일까? 본문

Application/Java, Kotlin

jar 와 war의 차이는 무엇일까?

Kangjieun11 2025. 2. 28. 20:50
728x90

 

 

✅ jar파일

Java Archive의 약자

 

자바 클래스, 메타데이터 및 리소스 를 하나의 파일에 모아 쉽게 배포하는 패키지 파일 형식  

Java 애플리케이션의 "설치 프로그램"으로 생각

 

>> 컴파일된 자바 코드 (.class) 와 리소스가 압축 형식으로 포함되어있다. 

 

 

목적

독립 실행형 애플리케이션  

자바 프로그램/ 라이브러리 배포할 때 

>>> JRE만 갖고도 실행이 가능하다.

 

 

jar파일의 구조 예 

- META-INF/
        - MANIFEST .MF (버전, 메인 클래스 등 의 메타데이터 포함 )
- com/
        - example/
                - MyApp .class (컴파일된 Java 코드 )
- resources/
        - image .png (또는 앱에 필요한 다른 리소스)

 

 

 

 

✅  war파일 

웹기반 자바 애플리케이션 패키징에 사용

 

 WAR 파일은 Servlet 컨테이너나 Tomcat 또는 Jetty와 같은 웹 서버에서 작동하도록 빌드

 

>> 웹 애플리케이션의 구성요소 (서블릿 HTML CSS등이 함께 패키징 되어있을 때)

웹서버에 배포할 때 

 

 

결국 WEB/WAS가 있어야만 실행 할 수 있다. 

 

 

war파일의 구조 예 

- WEB-INF/
         - web .xml (서블릿 및 필터 구성)
         - classes/ (컴파일된 Java 클래스)
         - lib/ (앱에 필요한 외부 라이브러리)
- index .jsp (JSP 파일)
- css/ (CSS 파일)
- js/ (JavaScript 파일)

 

 

 



 

 

 

 

일반적으로 외장WAS사용시 WAR파일을,  내장WAS사용시  JAR파일을 사용한다고 한다. 

>> 스프링부트는 JAR파일로 간단하게 배포가 가능하다. 

 

스프링부트를 이용하여 배포할 때  JAR파일로 빌드   > 배포할땐 EC2서버에 JDK1.8만 설치

스프링                           배포할 때  WAR파일로 빌드  >                EC2서버에  tomcat도 설치 

 

 

 

JAR파일은  마이크로서비스가  자체 내장 서버와 함께 독립적으로 실행될 수 있어서  MSA 에 잘 맞는다. 

WAR파일은 전통적인 Java EE 환경(톰캣/웹로직 등) 에서 애플리케이션을 배포할 때  ,  기존의 JavaEE애플리케이션을 유지보수할 때 /  기업환경에서 배포관리 프로세스가 WAR형식을 선호할 때 

 

 

 

 

사용 예 

 

WAR 파일 사용 예시: 기업 환경

  • 예를 들면 A 회사는 대규모 이커머스 플랫폼을 운영하고 있다. 여러 개의 복잡한 서블릿과 JSP, 다양한 데이터베이스 연결, 복잡한 비즈니스 로직을 관리해야 한다. 그래서 A 회사는 스프링 프레임워크를 사용하고, WAR 파일로 애플리케이션을 패키징 해서 Tomcat 서버에 배포한다. 이렇게 하면 서버의 관리 기능을 최대한 활용할 수 있어서 안정적인 운영이 가능하다.

JAR 파일 사용 예시: 스타트업 환경

  • B 스타트업은 간단한 소셜 미디어 앱을 개발하고 있다. 빠른 개발과 효율적인 리소스 관리가 필요해서 B 스타트업은 스프링 부트를 사용해 JAR 파일로 애플리케이션을 패키징한다. 내장된 Tomcat 서버 덕분에 어디서나 쉽게 앱을 실행할 수 있고, 별도의 서버 설정 없이도 빠르게 개발과 테스트, 배포가 가능해졌다.

 

레거시 환경이 아닌이상 대부분 JAR를 사용하는 것 같다. 

 

출처: https://curiousjinan.tistory.com/entry/spring-deploy-war-jar [오늘도 개발중입니다:티스토리]

 

 

 

jar  -> war를 변환하는 방법

jar 디렉터리에서  WEB-INF 를 추가하고  애플리케이션 구성요소를 패키징한다. 

war -> jar로 변환하는 방법

웹구성요소를 제거하고 클래스와 리소스를 다시 패키징한다. 

 

 


 

 

 

https://akadar899.medium.com/difference-between-jar-and-war-f39b4a430a25

 

Difference Between JAR and WAR

Java Archive(Jar) File vs Web Archive(War) File

akadar899.medium.com

 

 

 

 

 

http://wonin.tistory.com/498

 

JAR 과 WAR의 차이는 무엇일까?

스프링 프로젝트를 배포하려 합니다. 그러려면 프로젝트를 빌드하고 압축해서 서버에 올려야 합니다. 빌드하고 압축하는 과정 중에 의문이 들었습니다. jar 파일과 war 파일의 형태 2가지가 있었

wonin.tistory.com