[java] Jigsaw에서의 라이브러리 및 외부 종속성 관리

Java 9부터 도입된 Jigsaw를 사용하면 모듈 시스템을 활용하여 애플리케이션을 구성할 수 있습니다. 이 모듈 시스템은 라이브러리 및 외부 종속성을 관리하는 데에도 유용하게 사용될 수 있습니다.

모듈 및 종속성 정의

Jigsaw에서는 모듈 단위로 코드를 구성하며, 각 모듈은 자체적으로 종속성을 가질 수 있습니다.

모듈을 정의하기 위해 다음과 같은 선언을 사용합니다.

module com.example.myapp {
    requires transitive com.example.library;
    requires java.sql;
    exports com.example.myapp;
}

모듈 경로 설정

외부의 라이브러리나 모듈을 사용하기 위해서는 모듈 경로를 설정해야 합니다. 모듈 경로를 설정하는 방법은 다음과 같습니다.

java --module-path <module_path> --module <module_name>/<main_class>

런타임 모듈 해결

Jigsaw의 모듈 시스템은 런타임에 모듈과 종속성을 해결합니다. 다음과 같은 방법으로 모듈의 종속성을 해결할 수 있습니다.

1. 모듈 패치

Java 9부터는 모듈 패치를 통해 라이브러리나 모듈의 종속성을 해결할 수 있습니다. 모듈 패치를 사용하면 모듈 경로에 있는 것과 동일한 모듈을 패치된 모듈로 대체할 수 있습니다.

java --patch-module <module_name>=<module_path> --module <main_module>/<main_class>

2. 모듈 경로 설정

모듈 경로에 직접 라이브러리나 모듈을 추가하여 종속성을 해결할 수도 있습니다.

java --module-path <module_path> --module <main_module>/<main_class>

정리

Jigsaw를 사용하여 Java 애플리케이션을 개발할 때 라이브러리 및 외부 종속성을 관리하는 것은 매우 중요합니다. 모듈 시스템을 활용하여 명확하게 모듈과 종속성을 정의하고 해결할 수 있습니다. 이를 통해 코드의 격리성을 높이고 의존성 충돌을 피할 수 있습니다.

참고 자료