[java] Jigsaw를 활용한 자바 9 이후 버전의 주요 기능

자바 9 버전부터 Jigsaw라고 불리는 프로젝트가 도입되었습니다. Jigsaw는 자바 플랫폼의 모듈 시스템을 구축하기 위한 프로젝트로, 코드의 모듈화와 종속성 관리를 간편하게 할 수 있도록 도와줍니다. 이를 통해 자바의 성능을 향상시키고, 모노리식 아키텍처를 구축하는 데 도움이 됩니다.

모듈 시스템

Jigsaw의 핵심 개념 중 하나는 모듈 시스템입니다. 모듈은 관련된 패키지와 라이브러리의 집합으로 구성되어 있습니다. 이를 통해 코드를 논리적으로 그룹화하고, 필요한 모듈만 사용할 수 있도록 할 수 있습니다. 또한 모듈 간의 종속성도 명시적으로 정의할 수 있어서 불필요한 종속성을 제거하고, 애플리케이션의 성능을 향상시킬 수 있습니다.

모듈의 정의와 사용

모듈은 module-info.java 파일을 통해 정의됩니다. 이 파일에는 모듈의 이름, 내보내는 패키지, 사용하는 패키지 등을 명시할 수 있습니다. 모듈은 module 키워드로 시작하며, requires 키워드를 사용하여 다른 모듈에 대한 종속성을 명시할 수 있습니다.

예를 들어, 다음과 같이 모듈을 정의할 수 있습니다.

module com.example.myapp {
    requires java.base;
    requires javafx.controls;

    exports com.example.myapp;
}

위의 예제에서는 com.example.myapp 모듈이 java.base와 javafx.controls 모듈에 종속되어 있음을 명시하고 있습니다. 또한 com.example.myapp 패키지를 내보내도록 설정하였습니다.

모듈을 사용하기 위해서는 컴파일 시에 모듈 경로에 모듈을 추가해야 합니다. 이를 통해 컴파일러가 모듈 간의 종속성을 확인하고, 필요한 모듈을 로드할 수 있습니다.

JLink를 통한 애플리케이션 패키징

Jigsaw는 JLink라는 도구를 사용하여 애플리케이션을 패키징하는 기능도 제공합니다. JLink는 애플리케이션에 필요한 모듈만을 포함한 실행 가능한 이미지를 생성해줍니다. 이를 통해 애플리케이션의 배포와 실행을 간편하게 할 수 있습니다.

JLink를 사용하여 애플리케이션을 패키징하는 방법은 다음과 같습니다.

jlink --output myapp-image --add-modules com.example.myapp

위의 예제에서는 com.example.myapp 모듈을 포함한 실행 가능한 이미지를 myapp-image라는 디렉토리에 생성합니다. 이후 해당 디렉토리에서 애플리케이션을 실행할 수 있습니다.

결론

Jigsaw를 활용한 자바 9 이후 버전은 모듈 시스템을 통해 코드의 모듈화와 종속성 관리를 용이하게 할 수 있는 기능을 제공합니다. 이를 통해 애플리케이션의 성능을 향상시키고, 모노리식 아키텍처를 구축하는 데에 도움이 됩니다. JLink를 통한 애플리케이션 패키징 기능도 제공되어 배포와 실행을 간편하게 할 수 있습니다.

더 많은 정보를 원하신다면, 다음 자료들을 참고하시기 바랍니다: