[java] Jigsaw 모듈의 정의와 규칙

개요

Jigsaw는 자바 버전 9에서 새롭게 도입된 기능으로, 자바 애플리케이션을 모듈화하는 데 사용됩니다. 모듈화는 애플리케이션을 더 작고 관리 가능한 단위로 나누는 것을 의미하며, 애플리케이션의 개발과 배포를 더욱 용이하게 만들어줍니다.

모듈의 정의

Jigsaw 모듈은 관련된 클래스, 인터페이스 및 리소스의 집합입니다. 모듈은 다른 모듈과 상호작용하면서 독립적으로 존재할 수 있으며, 필요에 따라 추가적으로 모듈을 사용할 수 있습니다. 모듈은 모듈 디스크립터 파일(module-info.java)에 명시적으로 정의되며, 필요한 패키지 및 서비스를 exports 및 requires 문을 사용하여 선언합니다.

모듈 디스크립터 파일

모듈 디스크립터 파일은 “module-info.java”라는 이름의 파일로 작성되며, 모듈의 이름, 의존하는 모듈, 익스포트해야 하는 패키지 등을 정의합니다. 이 파일은 자바 소스 디렉토리의 루트에 위치해야 합니다. 모듈 디스크립터 파일은 모듈 경로에 있는 각 모듈에 대해 정확히 하나씩 있어야 합니다.

module com.example.module {
    requires other.module;
    exports com.example.package;
}

위의 예제에서는 “com.example.module”이라는 이름의 모듈을 정의하고, “other.module”이라는 다른 모듈에 대한 의존성을 선언합니다. 또한 “com.example.package” 패키지를 다른 모듈에서 접근할 수 있도록 exports 문으로 선언합니다.

모듈 경로와 모듈 패스

Jigsaw 모듈 시스템은 모듈을 찾고 로드하는 데 사용하는 모듈 경로라는 개념이 있습니다. 모듈 경로는 클래스 패스와 유사하지만 모듈 경로 상에 있는 각 모듈은 정확히 한 번만 로드됩니다. 또한 모듈 경로에서 로드된 모듈은 다른 모듈과 상호작용할 때에도 독립적으로 존재할 수 있습니다.

모듈 경로는 다음과 같이 사용할 수 있습니다.

java --module-path path/to/modules

결론

Jigsaw 모듈은 자바 애플리케이션을 모듈화하고 더욱 간결하고 유연한 구조를 만들어 줍니다. 모듈 디스크립터 파일을 사용하여 모듈의 의존성과 접근 권한을 명확하게 정의하고, 모듈 경로를 통해 모듈을 로드하면서 애플리케이션의 안정성과 관리성을 향상시킬 수 있습니다.


참고 문서: