Web

Spring Boot : jar, war 파일의 특성

superbono 2021. 8. 16. 21:01

https://stackoverflow.com/questions/5871053/difference-between-jar-and-war-in-java

 

* JAR (Java Archive) 

class와 같은 java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있다. 쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 플랫폼에 귀속되는 점만 제외하면 WIN ZIP과 동일한 구조이다. 

 

* WAR (Web Application Archive)

servlet/jsp 컨테이너에 배치할 수 있는 웹 어플리케이션(web application) 압축 파일 포맷이다. web application container는 웹 어플리케이션 자체 api를 제공하기 위해 컨테이너를 로드하는 클래스 로더와 사용자가 추가한 jsp나 war 파일을 다루기 위한 ServletContext Loader를 사용한다. 

 

 

배포할 때 로컬 실행 프로그램은 JAR로 패키징하고 웹은 WAR로 패키징한다. WAR은 압축 파일에 자바 관련 규약이 포함된 것이다. 바로 WEB-INF 폴더이다. 웹 어플리케이션 컨테이너는 WAR 파일의 WEB-INF 폴더를 기준으로 클래스 파일들을 로드한다. 

 

 

webapp, web과 같은 이름으로 프로젝트 설정에 따라서 조금씩 다르지만, HTML, javascript, CSS, HTML 태그를 포함하고 있는 JSP 파일처럼 브라우저에서 보여 줘야 하는 정적 자원을 관리하기 위한 폴더이다. 이 폴더는 브라우저 상에서 직접 접근할 수 있어서 최근에는 content directory를 WAR 파일의 상위에 두지 않고 WEB-INF 하위에 설정하는 추세이다.