프로젝트를 하면서, jar 파일과 war 파일에 대해 많이 보았을 것이다!
오늘은 이 두 개념에 대해 정확히 알아보고자 한다 🤐
그냥 결론부터 말하면 이 둘은 zip 파일이다 :|
.jar 파일: 자바 애플리케이션이나 라이브러리를 배포하기 위해 여러 파일들을 하나의 압축 파일로 묶어 놓은 것
이 파일은 자바에서 널리 사용되며, 다음과 같은 중요한 역할을 한다
[.jar 파일의 주요 특징]
- 다수의 파일을 하나로 묶음: .jar 파일은 클래스 파일, 리소스 파일(이미지, 설정 파일 등), 그리고 메타데이터 파일을 하나의 파일로 압축한다. 이를 통해 배포가 간편해지며, 여러 파일을 개별적으로 관리할 필요가 없다.
- 자바의 배포 형식: 자바 애플리케이션은 .jar 파일로 패키징되어 배포된다. 자바 런타임 환경(JRE)에서 실행할 수 있는 애플리케이션을 하나의 .jar 파일로 제공하면, 사용자는 해당 파일을 실행하기만 하면 된다. 실행 가능한 .jar 파일에는 메타데이터 파일인 MANIFEST.MF가 포함되어 있어, 진입점이 되는 클래스(main 메서드를 포함한 클래스)를 정의한다.
- 라이브러리 파일: .jar 파일은 단순히 실행 파일뿐만 아니라, 라이브러리 파일로도 사용된다. 자바 애플리케이션에서 필요한 외부 라이브러리나 모듈을 .jar 파일로 제공하여, 다른 프로젝트에서 쉽게 재사용할 수 있다. 개발자는 프로젝트에서 .jar 파일을 참조하여 해당 라이브러리의 기능을 호출할 수 있다.
- ZIP 형식 기반: .jar 파일은 기본적으로 ZIP 압축 형식을 따르기 때문에, 파일 확장자를 .zip으로 변경하여 ZIP 유틸리티로 내용을 열어볼 수 있다. 다만 .jar 파일은 자바 런타임 환경에서 사용될 목적으로 만들어졌으므로, 그 내부에는 자바 클래스 파일과 메타데이터가 포함되어 있다.
- 보안 기능: .jar 파일은 디지털 서명을 지원하여 배포된 파일의 무결성을 보장할 수 있다. 이를 통해 파일이 전달되는 중간에 변경되거나 악의적으로 변조된 경우 이를 감지할 수 있다.
(.jar 파일의 용도)
- 자바 애플리케이션 배포: 자바로 작성된 애플리케이션을 배포할 때, 모든 클래스 파일과 리소스 파일을 .jar 파일로 패키징하여 배포한다. 사용자는 해당 .jar 파일을 실행하기만 하면 된다.
- 라이브러리 제공: 다양한 자바 라이브러리(예: Apache Commons, Spring Framework)들이 .jar 파일 형식으로 제공된다. 개발자는 이러한 라이브러리를 프로젝트에 추가하여 필요한 기능을 활용할 수 있다.
- 웹 애플리케이션 구성: 웹 애플리케이션 개발에서, 자바의 서버 사이드 프레임워크인 Servlet이나 Spring 등의 프로젝트에서 .jar 파일을 사용하여 다양한 기능을 제공받는다.
그렇다면 war 파일은 뭘까?
똑같다! 근데 다만 이름만 앞에 web으로 바뀌었을 뿐이다
ㅇwar 파일: web application archive
(Maven을 이용한 WAR 파일 생성)
📌 pom.xml 설정
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0.0</version>
<packaging>war</packaging> <!-- WAR 패키징 설정 -->
<dependencies>
<!-- 필요한 의존성 추가 (예: Spring Boot, Servlet API 등) -->
</dependencies>
</project>
📌 WAR 파일 생성 명령어
mvn clean package
실행하면 target/ 디렉토리에 myapp.war 파일이 생성!
(Gradle을 이용한 WAR 파일 생성)
📌 build.gradle 설정
plugins {
id 'war'
}
war {
archiveFileName = 'myapp.war'
}
📌 WAR 파일 생성 명령어
gradle clean build
실행하면 build/libs/myapp.war 파일이 생성!
WAR 파일 배포 방법
✅ 1) Apache Tomcat에 배포
1. Tomcat 설치 후 webapps 디렉토리에 .war 파일 복사
cp myapp.war /path/to/tomcat/webapps/
2. Tomcat 실행
./bin/startup.sh # (Linux/macOS)
./bin/startup.bat # (Windows)
3. 웹 브라우저에서 확인
http://localhost:8080/myapp/
✅ 2) IntelliJ에서 직접 배포
- Run → Edit Configurations → Tomcat Server 추가
- Deployment 탭에서 .war 파일 추가
- 실행하면 Tomcat에 자동 배포됨
[JAR vs WAR]
.jar 파일은 자바 환경에서 "애플리케이션과 라이브러리를 배포하기 위한 표준 형식"이다. 이를 통해 여러 파일을 하나로 묶어 배포가 용이해지며, 자바 프로젝트에서 쉽게 활용할 수 있는 형태로 제공된다.
'웹 > 웹 지식' 카테고리의 다른 글
[웹 지식] 가상 환경(Virtual Environment) (5) | 2024.10.17 |
---|---|
[웹 지식] 템플릿 엔진(feat. JSP, Thymeleaf, Freemarker) (2) | 2024.10.06 |
[웹 지식] CRUD와 REST API 설계 규칙 (1) | 2024.10.05 |
[웹 지식] API와 RESTful API (3) | 2024.10.05 |
[웹 지식] URI와 URL, URN 정확히 짚고 넘어가기 (3) | 2024.10.05 |