일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링어노테이션
- mysql
- valid
- REST API
- 스프링스터디
- 북스터디
- IntelliJ
- 개발필독서
- 인공신경망
- 노개북
- Machine Learing
- spring
- Deep Learning
- 객체지향특징
- 개발서적
- springboot
- 인텔리제이
- 딥러닝
- 스프링컨테이너
- JPA
- 북클럽
- Dao
- 스프링프레임워크
- 클린코드
- 머신러닝
- til
- 임팩트커리어스터디
- 노마드코더
- NullCheck
- requestbody
- Today
- Total
dev.jaieve 공부기록
[Java] JAR와 WAR의 차이 본문
JAR, WAR, EAR는 모두 Java의 jar 툴을 이용하여 생성된 압축(아카이브)파일이다.
(JDK에서는 각 압축파일들에 접근하여 압축 해제없이 사용할 수 있음.)
압축 파일의 주 역할은 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일 등)들을 패키징하는 것이다.
Maven 을 이용하여 프로젝트 빌드를 관리했을 경우 다운로드된 라이브러리들은 class파일들이 묶인 jar파일로 구성되어 있는 것을 확인할 수 있다.

그리고 서비스 배포시에는 프로젝트를 WAR 포맷으로 묶어서 /wepapps 등의 지정된 경로에 넣고 Tomcat 등의 웹 컨테이너(Web container)를 이용하여 deploy하는 식으로 서비스를 많이 올린다.
JAR(Java Archive)
.jar 확장자 파일에는 Class 와 같은 Java 리소스와 속성파일, 라이브러리 및 액세서리 파일이 포함되어 있다.
즉, Java 어플리케이션이 동장학 수 있도록 Java 프로젝트를 압축한 파일이 바로 .jar 파일이다.
JAR 파일의 구조는 windows zip 파일과 동일한 구조이지만 플랫폼에 귀속되는 점은 다르다.
JAR파일은 원하는 구조로 구성할 수 있고, JDK(Java Development Kit)가 포함하고 있는 JRE(Java Runtime Environm,ent)만 가지고도 실행이 가능하다.
jar 형태로 구성이 되는 경우 ClassLoader에 의해 로드되는 객체들은 jar의 root에 위치하게 된다.
META-INF의 MANIFEST.MF 파일에는 매니페스트 버전, 빌드한 사용자, 빌드 jdk 버전, 빌드 툴 등의 정보가 포함되어 있다. 즉, jar 파일에 대한 manual이나 spec을 기록하는 폴더이다.
WAR(Web Application Archive)
.war 확장자 파일은 servlet / jsp 컨테이너에 배치할 수 있는 웹 어플리케이션 압축파일 포맷이다.
JSP, SERVLET, JAR, CLASS, XML, HTML, JAVASCRIPT 등 Servlet Context 관련 파일들로 패키징 되어 있다.
WAR파일은 JAR파일의 JAR옵션을 이용해 생성되기 때문에 웹 어플리케이션 전체를 패키징하기 위한 JAR파일이라고 볼 수 있다.
WAR로 패키징하는 경우 META-INF 폴더는 jar와 동일하게 만들어지고, WEB-INF가 하나 더 생긴다. WEB-INF는 외부 라이브러리와 개발된 어플리케이션의 컴파일된 클래스파일(객체_이 위치하는 classes 폴더를 포함한다.(jar는 ClassLoader에 의해 로드된 객체가 root에 위치하게 된다.)
WAR 파일은 JAR포맷과 달리 WEB-INF, META-INF 디렉토리로 구조가 사전 정의되어 있고, 웹 어플리케이션을 어떻게 설정할 지에 대한 정의가 있는 web.xml 파일이 있다. WEB-INF에 속한 web.xml파일은 web application 구성을 결정해준다. 필터, 서블릿, DB source 등 web container가 구동하는데 이용되는 환경 설정 파일인 것이다.
그렇기 때문에WAR파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹 서버(WEB) 또는 웹 컨테이너(WAS)가 필요하다.
서버가 처음 로딩될 때 web.xml을 읽어 환경설정에 대한 어플리케이션 배치를 한다. web.xml에 들어가는 환경설정에서 다음과 같은 설정을 줄 수 있다.
- 필터 정보(매핑 포함), 서블릿 정보(매핑 포함), 웹 어플리케이션 정보, 세션 정보, 세션 정보가 소멸, 생성, 수정되는 것을 알려주는 리스너 정보, MIME 매핑, welcomefile 정보, errorPage 정보, url 보호정보, Enterprise bean 홈 레퍼런스 정보(로컨 레퍼런스 정보 포함)
WAR는 웹 응용 프로그램을 위한 포맷이기 때문에 웹 관련 자원만 포함한다. 이를 사용하면 웹 어플리케이션을 쉽게 배포하고 테스트할 수 있다.
EAR(Enterprise Archive File)
JAVA EE(Enterprise Edition) 에 쓰이는 JAR 파일 형식중 한 종류.
한 개 이상의 모듈을 단일 아카이브로 패키징 하여 어플리케이션 서버에 동시에 일관적으로 올리기 위하여 사용되는 포맷. 즉, 실제 서버에서 배포하기 위한 단위이다.
Enterprise application에 필요한 모든 파일을 포함한다.(jar, war 등등)
요약

- JAR와 WAR, EAR는 모두 압축파일이고 어플리케이션을 쉽게 배포하고 동작시키기 위해 Java의 jar 툴을 이용해서 압축한 파일이라 구조적 차이가 없고, 확장자를 바꿔도 문제가 없다.
- JAR와 WAR의 사용목적이 다르다.
- JAR는 library나 일반 application을 배포할 때
- WAR는 web application을 배포할 때
- 파일 규모 : EAR > WAR > JAR
Reference
'Back > Java' 카테고리의 다른 글
[Java] <클린코드> 속 객체지향의 특징 - 캡슐화와 다형성 (0) | 2022.02.26 |
---|