Jar VS War

JeongHoHyun·2025년 2월 6일

Spring Boot

목록 보기
4/7

JAR (Java ARchiv)

특징

독립 실행 가능

  • spring-boot-starter-web을 사용하면 내장 웹서버 (Tomcat, Jetty, Undertow)가 포함되어 있어서 별도의 외부 웹 서버 없이 실행 가능.
  • java -jar myapp.jar 명령어로 실행 가능
  • JSP는 사용 불가능

배포 방식

  • 보통 클라우드 환경(AWS, GCP, Azure 등)이나 컨테이너 환경(Docker, Kubernetes)에서 실행하는 경우 적합.
  • Spring Boot Application이 포함된 하나의 실행 가능한 JAR 파일을 생성하여 실행 가능.
  • JSP를 사용하려면 WAR룰 선택

구성

  • "BOOT-INF/" 디렉토리에 클래스 파일과 라이브러리가 포함됨.
  • "META-INF/" 디렉토리에 매니페스트 정보가 저장됨.

장점

  • ✅ 간단한 실행 방식 : 내장 서버 포함 -> 외부 서버 설정 불필요
  • ✅ 클라우드 및 컨테이너 배포 용이 : 독립 실행 가능
  • ✅ 빠른 개발 및 실행 환경 구축 가능

단점

  • ❌ 기존 WAS(Tomcat, JBoss, WebLogic 등)와의 연동이 어려움
  • ❌ WAR 기반 프로젝트를 유지보수하는 경우 JAR 방식으로 변환이 필요할 수도 있음

WAR(Web Applicatioin Archive)

특징

WAS(Web Application Server)에 배포 필요

  • JAR 방식과 다르게 내장 서버를 포함하지 않음.
  • Tomcat, JBoss, WebLogic 같은 외부 애플리케이션 서버(WAS)에 배포하여 실행.

배포 방식

  • war 파일을 생성하여 Tomcat, JBoss, WebLogic 등에 배포하여 실행해야 함.

구성

  • "WEB-INF/" 디렉토리에 클래스 파일, 라이브러리, 설정 파일이 포함됨.
  • JAR 파일과 다르게 실행가능한 main() 메서드가 필요하지 않음.

장점

  • ✅ 기존 WAS 환경과 호환 가능
    • 여러 엔터프라이즈 환경에서 사용되는 기존의 WAS 환경과 호환성 높음
  • ✅ 대규모 프로젝트에서 사용 가능
    • 여러 서브 모듈을 퐇마하는 경우 활용 가능

단점

  • ❌ 별도의 WAS 필요
    • 내장 서버가 없으므로 실행하려면 별도로 WAS가 필요.
  • ❌ 배포 및 유지보수가 상대적으로 복잡.
    • JAR에 비해 설정과 배포 과정이 복잡하다.

언제 JAR를 쓰고 WAR를 써야할까

JAR를 선택하는 경우

  • 클라우드(AWS, GCP, Azure)환경에서 실행할 때
  • Docker 컨테이너에 배포할 때
  • 독립 실행형 애플리케이션이 필요할 때
  • 빠르게 개발하고 배포할 때

WAR를 선택하는 경우

  • 기존 WAS(Tomcat, JBoss, WebLogic 등) 환경을 유지해야 할 때
  • 엔터프라이즈 환경에서 대규모 프로젝트를 관리할 때
  • 여러 개의 애플리케이션이 동일한 WAS에서 실행될 때
  • JSP를 사용해야 할 때
profile
Java Back-End 2022.11.01 💻~ing

0개의 댓글