JAR WAR 특징 및 차이점 비교
이 장에서 배울 내용
- JAR 파일 특징
- WAR 파일 특징
- JAR WAR 차이점 비교
시작하기에 앞서
Spring Boot 프로젝트를 시작할 때 주로 Sprig Boot 를 통해 프로젝트를 설정해주고는 하는데, 이 때 Project Metadata 설정 항목 중 배포 파일 형식인 Packaging 형식을 지정해줘야한다.
선택지로는 jar, war 두 가지가 있는데 이 두 가지에 대한 차이점이 궁금해서 알아보게 되었다.
![]()
JAR (Java Archive)
JAR 형식 파일은 쉽게 말해 Java Application이 동작할 수 있도록 Java project를 압축한 파일이다. Class와 같은 Java resource 파일과 속성 파일, 라이브러리 등으로 구성되어 있고 원하는 구조로 구성이 가능하다. JRE(Java Runtime Environment)만으로도 실행이 가능하다. 실제로 JAR 형식 파일은 플랫폼에 귀속되지만 형식 자체는 winZip(파일들을 ZIP압축으로 압축하거나 압축을 푸는 프로그램) 파일과 동일한 구조이다.
WAR (Web Application Archive)
WAR 형식 파일은 서블렛(Servlet)/JSP(Java Server Pages) 컨테이너에 배치할 수 있는 Web Application 압축 파일이다. JSP, HTML, JavaScript, JAR, Class, XML 등의 Web Application이 구동되기 위한 다양한 자원을 한 군데 모아서 배포하는데 사용되는 파일이다. 별도의 Web Server나 WAS(Web Application Server(Tomcat, Weblogic, Websphere ))를 필요로 한다.
Web Application 프로그램을 위한 포맷으로 Web 관련 resource만 포함하고 있고 Web Application의 배포와 테스트를 쉽게 할 수 있도록 한다.
WAR 파일도 Java의 JAR 옵션을 이용해 생성되는 JAR 파일의 일종이며 Web Application 전체를 packaging하기 위한 JAR 파일로 생각할 수 있다.
JAR vs WAR
JAR와 WAR은 Application Resource를 packaging 하는 방법에 차이가 있을 뿐 뭘 사용하는지는 상황에 따라 다르게 하면 된다.
가장 큰 차이는 WAR는 별도의 WAS가 필요하고, JAR는 JRE만 존재하면 구동이 가능하다. 또한 WAR안에 JAR이 포함되므로 WAR는 JAR일 수 있지만 JAR는 WAR일 수 없다.
하지만 Spring Boot 에서 가이드하는 표준은 JAR이므로 JSP를 사용하여 화면을 구성하거나 외장 WAS를 사용하는 경우처럼 WAR를 사용해야하는 이유가 없다면 주로 JAR를 사용하여 서비스하는 것이 좋다.
[참고자료]