JAR와 WAR

SEPTEMBER·2025년 1월 8일

Java 프로젝트를 배포할 때 가장 많이 사용되는 두 가지 형식이 JAR(Java ARchive)WAR(Web Application Archive) 입니다. 이번 포스팅에서는 이 JAR와 WAR에 대해 알아 보고 두 형식의 차이를 정리해 보겠습니다.

JAR(Java ARchive)

JAR란

  • Java 클래스, 리소스, 메타데이터 등을 하나의 압축 파일로 묶은 형식
  • 주로 독립 실행형(Standalone) Java 애플리케이션에서 사용됨
  • 내부적으로 ZIP 형식을 사용하며 .jar 확장자를 가짐

특징

  • 일반적인 Java 애플리케이션을 배포하는 용도로 사용됨
  • JVM에서 실행 가능(java -jar myapp.jar)
  • 라이브러리(JAR 파일)를 포함할 수 있음(외부 라이브러리 포함 가능)
  • META-INF 디렉터리를 통해 추가적인 설정 가능(META-INF/MANIFEST.MF 포함)

실행 방법

java -jar myapp.jar

파일 구조

myapp.jar
 ├── com/example/Main.class
 ├── com/example/utils/Helper.class
 ├── resources/config.properties
 ├── META-INF/MANIFEST.MF
 └── lib/dependency1.jar

WAR(Web Application Archive)

WAR란

  • Java 웹 애플리케이션을 배포하는 압축 파일 형식
  • 웹 서버(Tomcat, Jetty, WildFly 등)에서 실행됨
  • JSP, 서블릿, 정적 리소스(HTML, CSS, JavaScript) 등을 포함함
  • JAR 파일을 포함할 수 있음(라이브러리 패키징 가능)
  • .war 확장자를 가짐

특징

  • Spring MVC, Spring Boot (Servlet 기반), JSP 프로젝트 배포에 사용됨
  • 웹 애플리케이션 서버(WAS)에 배포하여 실행함
  • JAR 파일과 달리, 특정 WAS에서 실행이 필요함
  • WEB-INF 디렉터리 내에 서블릿 및 설정 파일을 포함

실행 방법

WAR 파일은 웹 애플리케이션 서버(WAS, Web Application Server) 가 있어야 실행할 수 있습니다. 즉, JAR처럼 java -jar로 바로 실행할 수는 없지만, 다음과 같은 방법으로 실행할 수 있습니다.

> WAR 파일 배포하여 실행

  • Apache Tomcat 같은 WAS에 WAR 파일을 배포하면 자동으로 실행됨
  • webapps 폴더에 WAR 파일을 배치하면 자동으로 배포됨

파일 구조

mywebapp.war
 ├── index.html
 ├── styles.css
 ├── images/logo.png
 ├── WEB-INF/
 │   ├── web.xml
 │   ├── classes/
 │   │   ├── com/example/controller/HomeController.class
 │   │   ├── com/example/service/UserService.class
 │   ├── lib/
 │   │   ├── spring-core.jar
 │   │   ├── mysql-connector.jar
 │   ├── views/
 │   │   ├── home.jsp
 │   │   ├── login.jsp
 └── META-INF/

JAR vs WAR

Spring Boot처럼 자체 WAS를 포함하는 경우 JAR 형식으로 배포하는 것이 일반적이지만, 기업 환경에서는 기존 WAS(Tomcat 등)에 배포하기 위해 WAR 형식을 사용하기도 합니다.

  • JAR: 독립 실행 가능한 애플리케이션 (일반 Java 프로그램, Spring Boot 등)
  • WAR: 웹 애플리케이션 (Spring MVC, JSP 등 웹 프로젝트)
구분JARWAR
용도일반 Java 애플리케이션웹 애플리케이션
포함 내용.class 파일, 리소스, 라이브러리 등웹 관련 파일 (HTML, JSP, 서블릿, 정적 리소스 등)
실행 방식java -jar 로 실행 가능웹 서버(WAS)에 배포 후 실행
라이브러리 포함 방식JAR 파일 내부에 라이브러리 포함 가능/WEB-INF/lib/ 폴더에 JAR 파일 포함 가능
주로 사용되는 환경Java SE, JavaFX, Spring Boot (Standalone)Java EE, Spring MVC, JSP 기반 프로젝트

0개의 댓글