JAR , WAR 차이

spring boot 는 jar 파일로, spring framework 는 war 파일로 배포해야 한다. 라는 관행처럼 간주되는 내용에 대해,

정확히 어떤 이유로부터 파생된 결론인지 궁금해 정리해 보았습니다.

 

JAR ( Java Archive )

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

class( Java resource, 속성 파일 ), 라이브러리 파일을 포함하며 JRE 만 있어도 실행이 가능합니다.

장점

독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR 파일로 만들어서 개발자가 쉽게 애플리케이션 개발이 가능합니다. 또한 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달도 용이합니다.

마지막으로 Java 애플리케이션의 진입점인 main 메서드를 포함하고 있어 JVM 에서 직접 실행하므로 별도의 웹 컨테이너나 서버가 필요가 없습니다.

단점

웹 애플리케이션을 개발할 때는 WAR 파일에 비해 제약사항이 있습니다.

JSP 나 Servlet 컨테이너에 대한 표준 기능을 활용하기가 어렵다는 말입니다.

 

WAR( WEB Application Archive )

Servlet / JSP 컨테이너에 배치할 수 있는 웹 애플리케이션 압축파일 포맷입니다.

웹 관련 자원( JSP, XML, Javascript ) 등을 포함하며 별도의 웹서버(WEB) or 웹 컨테이너(WAS) 가 필요합니다.

장점

Java 웹 애플리케이션을 패키징하는데 최적화되어있고 웹 컨테이너를 통해 애플리케이션을 실행하므로 다양한 웹 기능과 서버 환경을 활용이 가능합니다.

단점

웹 컨테이너나 서버에 종속적이기 때문에 특정한 웹 컨테이너 환경이 필요합니다.

또한 배포 및 전달에 있어서 JAR 파일에 비해 크기가 크고 번거롭습니다.

뭘 써야할까?

JAR, WAR 파일 애플리케이션 리소스를 패키징 하는 방법에 차이가 있을 뿐, 뭘 사용해야 하느냐는 개발자의 판단에 따를 뿐입니다. 꼭 WAR 을 사용해야 하는 이유(JSP 를 사용해서 화면을 구성, 외장 WAS 사용) 가 없다면 뭘 사용할지에 대한 완벽한 답은 없습니다.

하지만 Spring boot 에서 가이드하는 표준은 JAR 이기 떄문에 참고하실 바랍니다.

 

'CS' 카테고리의 다른 글

웹서버, 웹 애플리케이션 서버  (0) 2025.05.16
CI, CD, 파이프라인  (0) 2025.03.24
Maven, Gradle 이란  (0) 2025.02.26
Tomcat 이란  (2) 2025.01.03
Base64, Blob  (0) 2024.11.29