[java] Jigsaw와 다른 JVM 언어 (Kotlin, Scala 등)와의 연동 방법

Jigsaw는 Java 9에서 소개된 Java 플랫폼의 새로운 모듈 시스템입니다. 하지만 Jigsaw는 Java만을 위한 것이 아니며, 다른 JVM 언어인 Kotlin, Scala 등과도 연동할 수 있습니다. 이 글에서는 Jigsaw와 다른 JVM 언어와의 연동 방법을 알아보겠습니다.

Jigsaw와의 연동

Jigsaw를 사용하여 Java 모듈을 작성하는 경우, 다른 JVM 언어와의 연동을 위해 몇 가지 고려 사항이 있습니다.

1. 모듈 디스크립터 작성

Jigsaw에서는 모든 모듈에 대한 디스크립터 파일인 module-info.java를 제공해야 합니다. 이 파일은 Java 모듈의 종속성 및 내보내기된 패키지를 정의합니다. JVM 언어로 작성된 모듈을 Jigsaw와 연동하기 위해서는 해당 언어에 맞는 디스크립터 파일을 작성해야 합니다.

2. 모듈 내보내기

Jigsaw에서는 모듈 간의 내보내기(export) 및 요구사항(requires)을 통해 모듈 간의 의존성을 관리합니다. 따라서 다른 JVM 언어로 작성된 모듈을 Jigsaw로 내보내려면, 해당 모듈의 패키지와 종속성을 적절한 방법으로 내보내야 합니다.

3. 빌드 도구 설정

JVM 언어로 작성된 모듈을 Jigsaw와 연동하기 위해 빌드 도구의 설정을 변경해야 할 수도 있습니다. 보통의 경우, 빌드 도구에 Jigsaw와 관련된 플러그인이나 확장이 필요할 수 있습니다. 이를 통해 Jigsaw의 모듈 시스템을 사용하고, 다른 JVM 언어와의 연동을 원활하게 할 수 있습니다.

Kotlin과의 연동

Kotlin은 Jigsaw와의 연동을 위해 별도의 설정이 필요하지 않습니다. Kotlin이 Java 바이트 코드로 컴파일되기 때문에, Java 모듈을 작성한 것처럼 Kotlin 모듈도 작성할 수 있습니다. Kotlin 모듈을 Jigsaw와 연동하려면 Kotlin 소스 코드를 컴파일하고 나면 자동으로 module-info.class 파일이 생성됩니다. 이 파일은 Kotlin 모듈의 디스크립터 파일로써 Jigsaw에 의해 인식됩니다.

Scala와의 연동

Scala는 JVM 언어로서 Jigsaw와의 연동을 위해 일부 추가 설정이 필요합니다. Scala 컴파일러에는 -release 옵션을 사용하여 자바 릴리즈를 지정하는 기능이 있는데, 이 옵션을 사용하여 Scala 코드를 컴파일하면 module-info.class 파일이 생성됩니다. 이 파일을 Scala 모듈의 디스크립터 파일로 사용할 수 있습니다. 도구에 따라 설정이 다를 수 있으므로, Scala와 Jigsaw의 연동을 위해서는 해당 도구의 문서를 참고해야 합니다.

결론

Jigsaw는 Java 모듈 시스템을 위한 강력하고 유연한 도구입니다. Kotlin과 Scala와 같은 다른 JVM 언어와 함께 사용하면, 더욱 더 효과적인 모듈화된 애플리케이션을 구축할 수 있습니다. Jigsaw와 다른 JVM 언어와의 연동 방법은 각 언어의 문서를 참고하면서 적절한 설정과 디스크립터 파일을 사용하면 됩니다.