[java] Jigsaw 모듈 간의 상호작용 방법

Java 9부터 도입된 Jigsaw 모듈 시스템은 애플리케이션과 라이브러리 사이의 의존성을 관리하고 모듈화된 소프트웨어 구조를 구축할 수 있게 해줍니다. Jigsaw 모듈 시스템을 사용하면 모듈 간의 상호작용을 조율할 수 있는 강력한 도구를 제공합니다.

모듈 정의하기

먼저, 각 모듈은 module-info.java라는 파일을 가지고 있어야 합니다. 이 파일은 모듈을 정의하고 내부적인 의존성을 명시하는 역할을 합니다. 각 모듈의 module-info.java 파일은 다음과 같은 형식을 따릅니다:

module 모듈명 {
    exports 패키지명;
    requires 다른모듈;
}

exports 문은 해당 패키지를 다른 모듈에 공개한다는 의미입니다. requires 문은 현재 모듈이 다른 모듈에 의존한다는 의미이며, 다른 모듈의 공개된 패키지를 사용할 수 있게 해줍니다.

모듈 간의 상호작용하기

Jigsaw 모듈 시스템을 사용하면 모듈 간의 상호작용을 단순하고 명확하게 정의할 수 있습니다. 예를 들어, 모듈 A가 모듈 B에 의존하고 있다면, 모듈 A의 module-info.java 파일에서 requires 문을 통해 의존 모듈을 선언해야 합니다.

module 모듈A {
    requires 모듈B;
}

이렇게 하면 모듈 A는 모듈 B의 공개된 패키지를 사용할 수 있게 됩니다.

또한, 모듈 간의 상호작용은 모듈 간에 공개된 패키지를 통해 이루어집니다. 예를 들어, 모듈 A의 module-info.java 파일에서 exports 문으로 공개된 패키지를 지정할 수 있습니다.

module 모듈A {
    exports 패키지명;
}

이렇게 하면 모듈 B는 모듈 A에서 공개된 패키지를 사용할 수 있습니다.

결론

Jigsaw 모듈 시스템을 사용하면 모듈 간의 상호작용을 명확하고 강력하게 조율할 수 있습니다. module-info.java 파일을 통해 각 모듈의 의존성과 공개된 패키지를 명시하면, 이를 통해 모듈 간의 관계가 구성됩니다. 이를 통해 애플리케이션의 구조를 모듈화하고 유연성과 재사용성을 향상시킬 수 있습니다.


참고 자료: