-
JAR, WAR 모두 Java의 jar 옵션 (java -jar)을 이용해 생성된 아카이브 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 리소스, 속성 파일 등을 패키징 한 것
[ JAR ]
- Java ARchived의 약자
- JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
- Class (JAVA리소스, 속성 파일), 메타데이터, 라이브러리 파일을 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷
- JRE만 있어도 실행 가능함
- JAR 파일은 실제로 ZIP 파일 포맷으로 이루어진 압축 파일
- 파일 확장자는 .jar
- 컴퓨터 사용자들은 JDK에 포함된 jar 명령어를 이용하여 JAR 파일을 만들거나 압축을 풀 수 있음
[ Jar파일 ]
- jar파일은 archive파일
- 즉 여러개의 파일을 하나의 파일로 묶는jar명령을 사용하여 생성
- 이 파일은 winzip에서 열어 볼 수 있으며, winzip에서열어보면 여러개의 파일들이 디렉토리 정보를 가진채 들어 있음
[ Zip 파일과 차이점 ]
- winzip과 다른점은 압축되어 있을수도 있고,하나로묶어놓은 파일일수도 있음
- 그래서 jar 파일을 archive파일이라 볼수 있음
- archive파일로 묶는 이유는 자바로 개발한 여러클래스 파일들 또는 패키지 파일이있을때, 이를 하나로 묶어두면, 그 클래스들을 참조하기도 편하고, 다운 받기도 쉬움
[ WAR ]
- Web ARchive의 약자
- Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷
- 웹 관련 자원을 포함함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
- 사전 정의된 구조를 사용함 (WEB-INF, META-INF)
- 별도의 웹서버 or 웹 컨테이너 필요
- 즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일
[ 스프링부트에서의 JAR, WAR ]
- 스프링부트 프로젝트를 새로 생성할 때, jar 또는 war 로 패키징 방식을 선택할 수 있음
- 두 방식 모두 WAS 컨테이너 위에서 동작하게 되는데, 이는 JAR파일에 WAS가 내장되어 있기 때문
- 기존 톰켓과 같은 컨테이너를 이용해야 했던 스프링보다 훨씬 간단하게 어플리케이션을 제작/배포할 수 있음
- 필요에 따라 외부 WAS를 이용해야할 경우도 생기는데, 이때는 WAR 파일로 패키징을 함