JAR (Java ARchive)
- 항아리, 병, 보관함
- 컴파일된 .class 파일, 리소스(.png, .properties ...), jar metadata 등으로 구성됨
- JDK에 포함된 프로그램이 ZIP 압축과 동일한 알고리즘을 사용해 압축 (압축 없이 생성도 가능)
➜ 생성된 JAR를 gzip, Pack200 등의 추가 압축 포맷을 적용해 더 작은 크기로 전송할 수 있음 (Pakc200은 Java 런타임 구조 변화 등으로 인해 JDK11부터 deprecated, JDK14에서 완전히 제거됨)
➜ 보통 3~4배, 최대 9배까지 압축 가능
사용
어플리케이션을 묶어서 배포하거나 설치할 수 있도록 함
라이브러리 패키징
단순 압축
(JAR 안에 메인 클래스를 지정하면 java -jar 파일명.jar 로 JAR 파일 자체를 압축 없이 실행할 수 있음)
구성 요소
컴파일된 .class 파일
리소스(.png, .properties ...)
META-INF: JAR 파일의 특별한 정보
MANIFEST.MF: JAR 파일의 설명서. JAR 실행 시 어떤 클래스를 먼저 실행할지와 같은 정보 포함
실습 - JAR 만들기 (maven 프로젝트 기준)

기본 프로젝트 생성

3 Maven buiild...

Goals에 clean package 입력 후 Run

target 폴더 안에 .jar 파일 생성

ZIP과 압축 알고리즘이 같기 때문에, 반디집으로도 볼 수 있다.

.java파일은 안들어가고 바이트 코드만 볼 수 있다.
이렇게 컴파일된 .class를 가지고 있는 jar파일은 다른 사람들에게 배포할 수 있는 라이브러리가 된다.
실습 - 만든 JAR를 라이브러리로 사용하기

이렇게 수정하고 .jar 새로 만들기

새 프로젝트 만들고 lib폴더 만들고 생성한 .jar 파일 넣기

build path에 .jar 파일 추가

이렇게 생긴다.

이렇게 활용할 수 있다.
실습 - 요약
Sample 프로젝트를 .jar 파일로 만들고 NewSample 프로젝트에 넣어서 Sample 프로젝트에 있는 SmapleStart 클래스를 사용할 수 있다.
(두 클래스 모두 default package이기 때문에 import를 안 해도 됨)
'Server > Java' 카테고리의 다른 글
| PCW(Post Compile Weaving) 적용법 및 테스트 (0) | 2025.08.15 |
|---|---|
| 2초의 인증 시간이 걸리는 로직의 동시 처리 성능 개선(1) - 프로파일링 툴 선정 (0) | 2025.06.18 |
| rt.jar, ee.jar (2) | 2025.04.27 |