JAR 파일은 Java ARchive의 약자로, 여러 파일을 하나의 파일로 압축한 패키지 파일 형식이다. JAR 파일은 주로 Java 애플리케이션의 배포에 사용되며, Java 클래스 파일과 관련 리소스를 하나의 압축 파일에 묶어 배포와 관리를 용이하게 한다.
JAR 파일의 구성 요소
1.
Java 클래스 파일: 컴파일된 .class 파일들이 포함된다.
2.
메타데이터: META-INF 디렉토리에 저장되는 메타데이터 파일들이다. 여기에는 JAR 파일에 대한 정보와 설정이 포함된다. 대표적인 파일은 MANIFEST.MF이다.
3.
라이브러리 및 리소스 파일: 이미지, 텍스트 파일, 프로퍼티 파일 등 애플리케이션이 필요로 하는 모든 파일을 포함할 수 있다.
JAR 파일의 생성과 사용
JAR 파일 생성
Java 애플리케이션을 개발한 후, JAR 파일을 생성하는 방법은 여러 가지가 있다. 여기서는 명령줄 도구와 빌드 도구(Gradle)를 사용하는 방법을 설명한다.
1.
명령줄 도구를 사용하여 JAR 파일 생성:
jar cf MyApp.jar -C bin/ .
Bash
복사
•
jar는 JDK에 포함된 도구이다.
•
c는 새로운 JAR 파일을 생성(create)한다는 의미이다.
•
f는 파일명을 지정하겠다는 의미이다.
•
C bin/ .는 bin/ 디렉토리에서 모든 파일을 포함하라는 의미이다.
2.
Gradle을 사용하여 JAR 파일 생성:
build.gradle 파일에 다음 내용을 추가한다.
plugins {
id 'java'
}
jar {
manifest {
attributes(
'Main-Class': 'com.example.Main'
)
}
}
Groovy
복사
그런 다음, 다음 명령을 실행하여 JAR 파일을 생성한다.
./gradlew clean build
Bash
복사
이 명령은 build/libs/ 디렉토리에 JAR 파일을 생성한다.
JAR 파일 실행
생성된 JAR 파일은 Java 런타임 환경에서 실행할 수 있다. 예를 들어, MyApp.jar 파일을 실행하려면 다음 명령을 사용한다.
java -jar MyApp.jar
Bash
복사
JAR 파일의 주요 장점
1.
배포의 용이성: 여러 파일을 하나의 파일로 묶어 배포할 수 있으므로 관리가 용이하다.
2.
플랫폼 독립성: JAR 파일은 Java의 "Write Once, Run Anywhere" 특성 덕분에 다양한 플랫폼에서 실행될 수 있다.
3.
보안: JAR 파일은 디지털 서명을 통해 무결성을 검증할 수 있다.
4.
로드 속도 향상: 압축된 형태로 저장되어 있어 로드 시간이 줄어든다.
MANIFEST.MF 파일
META-INF 디렉토리 안에 위치한 MANIFEST.MF 파일은 JAR 파일에 대한 메타데이터를 포함하는 파일이다. 이 파일은 JAR 파일의 특성을 정의하고, 애플리케이션의 진입점을 지정할 수 있다. 예를 들어, 실행 가능한 JAR 파일의 MANIFEST.MF 파일에는 다음과 같은 내용이 포함될 수 있다.
Manifest-Version: 1.0
Main-Class: com.example.Main
Plain Text
복사
여기서 Main-Class는 JAR 파일을 실행할 때 시작되는 클래스이다.
예제: Spring Boot 애플리케이션의 JAR 파일
Spring Boot 애플리케이션을 빌드하면, bootJar 태스크를 통해 실행 가능한 JAR 파일을 생성할 수 있다. Gradle을 사용하는 Spring Boot 애플리케이션의 경우, build.gradle 파일에 다음과 같이 설정할 수 있다.
plugins {
id 'org.springframework.boot' version '2.5.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
bootJar {
mainClassName = 'com.example.demo.DemoApplication'
}
Groovy
복사
이후, 다음 명령을 실행하여 JAR 파일을 생성한다.
./gradlew clean bootJar
Bash
복사
생성된 JAR 파일은 build/libs/ 디렉토리에 위치하며, 다음 명령으로 실행할 수 있다.
java -jar build/libs/your-app.jar
Bash
복사
JAR 파일은 Java 애플리케이션을 배포하고 실행하는 데 매우 유용한 형식이다. 이 파일 형식을 통해 다양한 플랫폼에서 일관된 방식으로 애플리케이션을 관리할 수 있다.