본문으로 건너뛰기

Jar

1 Jar

  • Jar (Java Archive) 파일은 여러 Java 클래스 파일과 관련 메타데이터, 리소스(텍스트, 이미지 등)를 하나의 파일로 묶어 배포하기 위한 패키지 파일 형식입니다.
  • 이러한 파일들은 주로 Java 애플리케이션 또는 라이브러리를 배포하는 데 사용됩니다.
  • Jar 파일은 ZIP 형식으로 생성되며 .jar 파일 확장자를 가집니다.
  • 컴파일된 Java 클래스 및 관련 리소스를 저장하는 데 사용되어 Java 소프트웨어 또는 라이브러리의 배포 및 배포를 용이하게 합니다.

1.1 작동 방식

  • 컴파일
    • Java 소스 파일(.java)은 Java 컴파일러에 의해 바이트코드(.class 파일)로 컴파일됩니다.
  • 패키징
    • 이러한 클래스 파일과 관련 리소스는 단일 Jar 파일로 함께 패키징됩니다.
    • 여기에는 구성 데이터 및 애플리케이션 진입점을 지정할 수 있는 매니페스트 파일(MANIFEST.MF)과 같은 파일에 대한 메타데이터가 포함될 수 있습니다.
  • 실행
    • Jar 파일에 애플리케이션의 진입점(메인 클래스)을 지정하는 매니페스트가 포함되어 있는 경우 JRE(Java Runtime Environment)에서 실행할 수 있습니다.
    • java -jar myapplication.jar 명령은 실행 가능한 Jar 파일을 실행하는 데 사용됩니다.

2 Jar의 종류

2.1 Plain Jar

  • Plain Jar는 기본적인 Jar 파일로, 프로젝트의 컴파일된 클래스 파일과 리소스만을 포함합니다.
  • 이는 외부 라이브러리나 종속성은 포함하지 않습니다.
  • Plain Jar는 다른 프로젝트에서 라이브러리로 사용되거나, 클래스패스에 추가되어 사용될 수 있습니다.
  • 하지만 Plain Jar 자체만으로는 실행할 수 없으며, 필요한 종속성을 별도로 제공해야 합니다.

2.2 Fat Jar (Uber Jar)

  • Fat Jar 또는 Uber Jar로도 불리는 이 파일은 애플리케이션을 실행하는 데 필요한 모든 종속성과 리소스를 포함하는 Jar 파일입니다.
  • 즉, 프로젝트에서 사용된 모든 외부 라이브러리 파일이 Fat Jar에 포함되어 있어, 이 Jar 파일만으로 애플리케이션을 실행할 수 있습니다.
  • 이는 배포 과정을 단순화하지만 파일 크기가 증가하는 단점이 있습니다.

2.3 Boot Jar

  • Boot Jar는 Spring Boot 프레임워크에서 사용되는 특수한 유형의 Jar 파일입니다.
  • 이는 Fat Jar의 개념을 확장하며 Spring Boot 애플리케이션을 실행하는 데 필요한 모든 것을 포함합니다.
  • 하지만, Boot Jar는 Spring Boot의 특정 구조를 따르며 내장 컨테이너(예: Tomcat)를 사용하여 웹 애플리케이션을 쉽게 배포하고 실행하기 위해 설계되었습니다.