Programming/Spring

[Spring Boot] JAR / WAR 배포는 무엇으로 결정할까? (개념 / 특징 / 차이점)

JeongKyun 2022. 4. 6.
반응형

서론

이번 글에서는 jar와 war가 각자 갖고있는 특징이 있고 상황에 맞게 배포를 해야하는데 이 부분에 대해 정리를 해보려한다.

 

** 필자는 SpringInAction5의 책을 참고하여 작성했다.

 


 

ear, war, jar 구조

JAR는 언제 쓰일까?

JAR 패키징은 클라우드를 염두에 둔 선택이다.

 

WAR 파일은 기존의 자바 애플리케이션 서버에 애플리케이션을 배포할 때는 적합하지만 대부분의 클라우드 플랫폼을 구성하는데는 잘 맞지 않는다.

 

일부 클라우드 플랫폼에서는 WAR파일을 배포하고 실행할 수 있다. 그러나 모든 자바 클라우드 플랫폼은 실행 가능한 JAR파일을 사용한다.

 

따라서 Spring Initializer에서도 JAR 패키징을 기본값으로 사용하는 것이다.

 

 

 

JAR의 특징을 정리해보면..

1. JAR는 자바로 만든 어플리케이션의 구성요소들을 압축시켜 놓은 파일이다.

 

2. JRE or JDK 환경에서 JAR 파일을 실행 시킬 수 있다.

 

3. 스프링부트는 내장 톰캣을 포함하고있기 때문에 간단하게 JAR 배포만으로 실행이 가능하다. (이 특징 때문에 보통의 클라우드 환경에서 사용된다.)

 

4. 스프링부트에서 JSP를 지양하는데 JAR에서는 JSP를 사용할 수 없다. 이래서 Spring Initializer에서도 기본 값이 JAR로 되어있다.

 


 

WAR는 언제 ?

만일 기존의 자바 애플리케이션 서버에 우리 애플리케이션을 배포하고자 한다면 WAR 패키징을 선택하고 웹 초기 설정 클래스를 포함시켜야 한다. 

 

 

 

WAR의 특징을 정리해보면..

1. WAR 확장자 파일은 Servlet/ Jsp 컨테이너에 배치할 수 있는 웹 어플리케이션을 압축한 파일이다.

 

2. Servlet / Jsp / JAR / CLASS / XML / HTML 등 Servlet Context 관련 파일들로 패키징 되어있다.

 

3. WAR는 JAR와 달리 특정 웹 컨테이너의 구조에 맞춰 실행된다.

 

4. 웹 관련 자원만 포함하고 있다.

 


 

결론

jar,war는 둘다 자바 클래스 패키징 확장자를 말하며, 프로젝트를 압축해서 배포할 때 사용된다.

 

그런데 둘의 차이는

jar는 클라우드 환경에 보통 사용되고,

war는 웹 어플리케이션 전용 패키징이고,

웹 서버가 내장되어 있어 웹 사이트 배포에 좀 더 특화 되어있다고 보면된다.

댓글

💲 많이 본 글