JAR? WAR??
기본적으로 JAR, WAR 모두 Java의 jar 옵션을 이용해 생성된 압축(아카이브) 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성 파일 등)을 패키징 한 것이다.
JAR (Java Archive)
JAR는 패키지 파일 형식으로 .jar 확장자를 가지며 라이브러리, 리소스 및 메타데이터 파일을 포함할 수 있다.
- Java 애플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
- Class (Java 리소스, 속성 파일), 라이브러리 파일을 포함함
- JRE (Java Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트명.jar)
WAR (Web Application Archive)
WAR는 웹 애플리케이션 아카이브 또는 웹 애플리케이션 리소스를 나타내고, .war 확장자를 가지며 모든 Servlet/JSP 컨테이너에 배포할 수 있는 웹 애플리케이션을 패키징하는 데 사용된다.
- Servlet/JSP 컨테이너에 배치할 수 있는 웹 애플리케이션 (Web Application) 압축파일 포맷
- 웹 관련 자원을 포함함 (Jsp, Servlet, JAR, Class, XML, HTML, Javascript)
- 사전 정의된 구조를 사용함 (WEB-INF, META-INF)
- 별도의 웹 서버 (WEB) or 웹 컨테이너 (WAS) 필요
- 즉, JAR 파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일
차이점
- 파일 확장자의 차이
- .jar
- .war
- 목적과 기능 방식의 차이
- JAR 파일을 사용하면 여러 파일을 패키징하여 라이브러리, 플러그인 또는 모든 종류의 애플리케이션으로 사용할 수 있다.
- WAR 파일은 웹 애플리케이션에만 사용된다.
- 아카이브 구조 차이
- JAR는 원하는 구조로 구성 가능하다.
- WAR는 WEB-INF 및 META-INF 디렉토리가 있는 미리 정의된 구조가 있다.
- 실행의 차이
- JAR는 별도의 소프트웨어 없이 명령어를 통해 실행 가능하다.
- WAR는 서버가 필요하다.
참고
'Back-End' 카테고리의 다른 글
멀티 모듈은 뭘까? (0) | 2024.04.22 |
---|---|
HTTP 상태 코드에 대해서 (1) | 2024.04.12 |
Gradle 의존성 옵션 종류 (0) | 2024.03.20 |
[Spring] 스프링 프레임워크의 MVC 동작원리 (1) | 2024.03.11 |
[Spring] 스프링을 사용하는 이유 (0) | 2024.03.04 |