데옹의 블로그

[Spring Boot] JAR vs WAR 본문

SpringBoot

[Spring Boot] JAR vs WAR

성띠용 2023. 3. 18. 00:47

스프링을 공부하면서 시작할 때 jar, war 둘 중 하나를 선택하는데 (Spring Initializr 에서)

두개가 대체 왜 쓰는지도 모르고 하라는대로 하니까 속이 터진다.

 

그래서 jar / war의 차이점을 알아보고자 한다.

 


JAR

Java ARchive이다.

archive : 기록 보관소, 기록 보관소에 보관하다. 파일을 보관하다.. 등등의 뜻을 갖고 있다.

근데 컴퓨터 공학에서는 압축 파일이라는 뜻이 또 있다.

 

따라서 그냥 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일이다.

압축을 따로 해제하지 않아도 JDK(Java Development Kit)에서 접근해 사용이 가능하다. 좀 더 구체적으로는 JDK에 포함되는 JRE(Java Runtime Environment)만 가지고도 실행이 가능하다.

이런 저런 정의들을 모아보면

  • JAVA application이 동작할 수 있도록 자바 프로젝트를 압축한 파일
  • Class(JAVA resource, 속성 파일), 라이브러리 파일을 포함
  • JRE(JAVA Runtime Environment)만 있어도 실행 가능

WAR

Web Application Archive이다.

이 것도 Archive가 들어가니 압축하는 것이다.

말 그대로 웹 애플리케이션을 압축하고 배포하는데 사용되는 파일 형태이며 JSP, Servlet, Java Class, XML, 라이브러리, 정적 웹페이지 및 웹 애플리케이션을 구성할 때 필요한 자원들을 압축한 jar file이다. 이 것도 이런 저런 정의 모아보면

  • Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션 압축파일 포맷
  • 웹 관련 자원을 포함하고 있음
  • 사전 정의된 구조 사용 (WEB-INF, META-INF)
  • 별도의 웹 서버(WEB) 이나 웹 컨테이너(WAS) 필요 - Tomcat, Weblogic, Websphere 등
  • JAR 파일의 일종이며, 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일

 기본적으로 JAR, WAR 모두 Java의 jar (java-jar) 옵션을 이용해서 생성된 압축 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일들을 패키징 한 것이다.

 이 압축 파일들은 압축의 해제 없이, JDK에서 각 파일들을 접근하여 사용할 수 있도록 설계되어 있으며 압축하는 이유는 단순하게 파일의 용량이 줄어들고 관리하기 편하기 때문이다.

 


공식문서를 보고 더 자세한 내용은 추후에 추가 예정~