War 은 Web Application Archive 의 약어이다.
Servlet / jsp 컨테이너에 배치 할 수 있는 웹 어플리케이션 압축파일 포맷이다.
JSP, Servlet, Java Class, 등 Servlet Context 관련 파일들로 패키징되어 있다.
또한 웹 응용 프로그램을 위한 포맷이기 때문에 웹 관련 리소스를 포함하고 있으며 이를 사용하면 웹 어플리케이션을 쉽게 배포하고 테스트 할 수 있다.
즉, 웹 어플리케이션이 구동되기 위한 기타 자원을 한 군데에 모아 배포하는 데 사용되는 파일이다.
Jar 는 Java Archive 의 약어이다.
여러 개의 자바 클래스 파일과 클래스에서 필요로하는 관련 리소스들 및 메타데이터들을 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.
즉, Java 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 생각할 수 있다
추가적으로 EAR 은 Enterprise Archived의 약어로 한 개 이상의 모듈을 단일 아카이브로 패키징하여 어플리케이션 서버에 동시에 일관적으로 올리기 위하여 사용되는 포맷이다.
모두 Java의 jar 툴을 이용하여 생성된 압축(Archive)파일이며, 어플리케이션을 쉽게 배포하고 동작시킬 수 있도로 관련 파일(리소스)들을 패키징해주는 것이 주 역할이다.
War 는 Jar파일의 일종으로 웹어플리케이션 전체를 패키징 하기 위한 Jar 파일이다.
War는 별도의 웹서버 또는 WAS(웹 컨테이너)가 있어야 프로젝트 구동이 가능하다.
Jar는 JRE만 존재하면 프로젝트 구동이 가능하다.
Jar, War 파일 어플리케이션 리소스를 패키징하는 방법의 차이가 있을뿐, 사용하는 개발자의 판단에 따르게 된다.
War 를 사용해야하는 경우는 JSP를 사용하여 화면을 구성, 외장 WAS를 이용할 계획이 이에 해당된다 하지만 Spring Boot 에 가이드 표준은 Jar 이기 때문에 특정 경우를 제외한 Jar를 사용하는 것이 합당한 것이라고 생각한다.
References (참고 자료)