본문 바로가기

spring/그 외 알게 된 것

jar와 war

JAR (Java Archive)

자바 애플리케이션이 실행될 수 있도록 프로젝트를 압축한 파일 형식.

  • 애플리케이션에서 사용하는 클래스 파일과 라이브러리를 포함.
  • JRE(Java Runtime Environment)만 설치되어 있다면 실행 가능.
  • 독립 실행형 애플리케이션에 적합.
  • 구성 요소:
    • .class 파일
    • 외부 라이브러리(JAR)
    • META-INF/MANIFEST.MF (메타데이터 파일)
  • 스프링 부트와의 관계:
    • 스프링 부트는 기본적으로 JAR 형식으로 패키징.
    • 내장 톰캣을 사용하여 독립적으로 실행 가능.
    • 웹 애플리케이션 개발 시 별도의 외부 웹 컨테이너를 필요로 하지 않음.

 

WAR (Web Application Archive)

서블릿/JSP 컨테이너에 배포할 수 있는 웹 애플리케이션 압축 파일 형식.

  • 웹 관련 자원을 포함: JSP, Servlet, JAR, Class, XML, HTML, Javascript 등.
  • 사전 정의된 구조를 사용:
    • WEB-INF: 설정 파일, 클래스, 라이브러리 등이 포함.
    • META-INF: 애플리케이션 메타데이터.
  • 독립 실행이 불가능하며, 웹 서버나 웹 컨테이너(예: Tomcat, Jetty)가 필요.
  • JAR 파일의 확장 개념.
  • 스프링 부트와의 관계:
    • WAR는 외부 톰캣 또는 서블릿 컨테이너에 배포할 때 사용.
    • 스프링 부트로 WAR 패키징하려면 spring-boot-starter-tomcat의 스코프를 provided로 설정해야 함.

 

JAR와 WAR의 주요 차이점

구분 JAR WAR

용도 독립 실행 애플리케이션 웹 애플리케이션
구성 요소 클래스, 라이브러리, META-INF JSP, Servlet, JAR, Class, XML, HTML 등
실행 환경 JRE만 있으면 실행 가능 웹 서버/컨테이너 필요
스프링 부트 사용 기본 패키징 형식 (내장 톰캣 사용) 외부 톰캣 등에 배포할 때 사용

 

스프링 부트와 JAR

  • 스프링 부트는 기본적으로 JAR를 사용하며, 내장 톰캣을 포함하여 독립 실행 가능한 애플리케이션을 만든다.
  • WAR 패키징은 기존의 외부 톰캣 환경에 배포해야 할 때 주로 사용되며, 스프링 부트에서는 상대적으로 드물다.