Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9의 JLink 도구란? 커스텀 JRE 생성 방법 총정리

JLink는 자신만의 맞춤형 JRE(Customized JRE)를 생성할 수 있게 해주는 새로운 링커(Linker) 도구입니다. 보통 프로그램을 실행할 때는 Oracle이 제공하는 기본 JRE를 사용하지만, 직접 JRE를 구성해야 하는 상황이라면 이 도구를 활용하면 됩니다.

JLink는 애플리케이션 실행에 필요한 클래스만 포함된 JRE를 만들어 주기 때문에, 배포 패키지의 크기를 크게 줄일 수 있고 전체 JRE에 대한 의존성도 해소할 수 있다는 장점이 있습니다.

링크 타임(Link Time)이라는 새로운 단계

Java 9에서는 코드를 컴파일하고 실행하기 사이에 새로운 단계가 도입되었습니다. 바로 링크 타임(Link Time)으로, 컴파일 타임(Compile Time)런타임(Runtime) 사이에 위치하는 선택적(Optional) 단계입니다. JLink는 바로 이 링크 타임에 모듈들을 연결하여 최적화된 런타임 이미지를 생성합니다.

커스텀 JRE 생성 기본 명령어

jlink --module-path --add-modules --limit-modules --output

주요 옵션 설명

  • module-path: 링커가 관찰 가능한(Observable) 모듈을 검색하는 경로입니다. 모듈형 JAR 파일, JMOD 파일, 그리고 모듈들이 여기에 해당됩니다.
  • add-modules: 런타임 이미지에 추가할 모듈의 이름을 지정합니다. 지정된 모듈은 전이 의존성(Transitive Dependencies)을 통해 다른 모듈들까지 함께 가져올 수 있습니다.
  • limit-modules: 관찰 가능한 모듈의 범위를 제한하여 불필요한 모듈이 포함되지 않도록 합니다.
  • output: 생성된 런타임 이미지가 저장될 출력 디렉터리를 지정합니다.

실제 사용 예시

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp

위 명령어에서 module-path 값은 패키징된 모듈들이 들어 있는 디렉터리 경로입니다. $JAVA_HOME/jmodsjava.base.jmod를 비롯한 표준 및 JDK 모듈들이 포함된 디렉터리이며, 모듈 경로상의 mlib 디렉터리에는 com.greetings 모듈의 아티팩트(Artifact)가 담겨 있습니다.

이렇게 실행하면 greetingsapp이라는 디렉터리에 해당 애플리케이션 실행에 꼭 필요한 모듈만으로 구성된 가벼운 커스텀 JRE가 생성됩니다. 클라우드 환경이나 컨테이너처럼 배포 크기가 중요한 환경에서 특히 유용하게 활용할 수 있습니다.