Spring

[Spring] JAR VS WAR

cloud-grace 2024. 7. 6. 18:43

JAR? WAR?

JAR과 WAR은 모두 Java의 jar 옵션을 이용하여 생성된 압축(아카이브)한 파일로 애플리케이션을 쉽게 배포하고 동작시킬 수 있게 파일들을 패키징한 것이다.

 

JAR(Java ARchive)

  • JAR은 패키지 파일 형식으로 .jar 확장자를 가진다.
  • Java 애플리케이션이 동작하도록 Java 프로젝트를 압축한 파일이다.
  • Class (Java 리소스, 속성 파일), 라이브러리 등을 포함한다.
  • JRE(Java Runtime Environment)만 있어도 실행 가능하다.
java -jar 프로젝트명.jar

 

WAR(Web Application ARchive)

  • WAR은 웹 애플리케이션 아카이브 or 웹 애플리케이션 리소스를 나타내며, .war 확장자를 가진다.
  • 모든 Servlet/JSP 컨테이너에 배포할 수 있는 웹 애플리케이션을 패키징하는 데에 사용되는 압축파일 포맷이다.
  • 웹 관련 자원(JSP, Servlet, JAR, Class, XML, HTML, JavaScript)을 포함한다.
  • 사전 정의된 구조(WEB-INF, META-INF)를 사용한다.
  • 별도 웹 컨테이너(WAS)가 필요하다. (ex. Apache Tomcat, Jetty 등)
  • JAR 파일의 일종으로 웹 애플리케이션 전체를 패키징한다.

 

정리

  • 파일 확장자 차이 : .jar VS .war
  • 아카이브 구조 차이 : JAR은 원하는 구조로 구성 가능하지만, WAR는 WEB-INF, META-INF 등 미리 정의된 구조가 있다.
  • 실행 차이 : JAR은 별도의 웹 컨테이너나 서버 없이도 단순 명령어로 실행이 가능하지만, WAR는 필요하다.
  • JAR 파일을 사용하면 여러 파일을 패키징하여 라이브러리, 플러그인, 모든 종류의 애플리케이션으로 사용 가능하며, Spring Boot에서 많이 활용된다.
  • WAR 파일은 웹 애플리케이션에서만 사용된다.
  • JAR 파일은 JSP나 서블릿 컨테이너에 대한 표준 기능을 활용하기 어렵다.