[java] Jigsaw 모듈을 활용한 자바 개발자의 생산성 향상

소개

Jigsaw는 자바 9에서 도입된 모듈화 시스템입니다. 이 모듈 시스템은 기존에는 클래스와 패키지 단위로 구성되었던 자바 애플리케이션을 모듈 단위로 분리하여 개발하는 방식입니다. Jigsaw 모듈을 활용하면 자바 개발자는 애플리케이션의 종속성을 명시적으로 관리할 수 있고, 실행 시간에 필요한 모듈만 로드하여 애플리케이션의 메모리 소비를 최적화할 수 있습니다.

모듈 정의하기

자바 애플리케이션에서 모듈을 구성하기 위해서는 module-info.java 파일을 생성해야 합니다. 이 파일은 기존의 package 키워드를 사용하여 패키지를 정의하는 것과는 달리, module 키워드를 사용하여 모듈을 정의합니다. 모듈 정의 파일에는 해당 모듈의 이름, 의존하는 다른 모듈의 이름, 필요한 패키지들을 명시적으로 선언합니다.

module com.example.myapp {
    requires org.example.mylibrary;
    exports com.example.myapp.api;
}

위의 예시에서 com.example.myapp은 모듈의 이름을 나타내며, org.example.mylibrary는 의존하는 모듈의 이름입니다. requires 키워드를 사용하여 모듈 간의 의존성을 명시합니다. 마지막으로, exports 키워드를 사용해서 다른 모듈에서 사용할 수 있도록 공개할 패키지를 선언합니다.

모듈화된 애플리케이션 빌드하기

모듈화된 애플리케이션을 빌드하기 위해서는 기존의 자바 빌드 도구인 Maven이나 Gradle을 사용할 수 있습니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 모듈화 관련 설정을 추가해야 합니다.

<project>
    ...
    <properties>
        <maven.compiler.module>com.example.myapp</maven.compiler.module>
    </properties>
    ...
</project>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 모듈화 관련 설정을 추가해야 합니다.

plugins {
    id 'java'
}

java {
    modularity.inferModulePath = true
}

모듈화된 애플리케이션을 빌드하고 실행하기 위해서는 자바 컴파일러에 --module 옵션을 사용하여 모듈 경로를 전달해야 합니다.

javac --module-path mods --module com.example.myapp

위의 예시에서 mods는 빌드된 모듈들이 위치하는 디렉토리를 나타냅니다.

모듈화된 애플리케이션 실행하기

모듈화된 애플리케이션을 실행하기 위해서는 java 명령어에 --module 옵션을 사용하여 실행할 모듈을 지정해야 합니다.

java --module-path mods --module com.example.myapp/com.example.myapp.Main

위의 예시에서 com.example.myapp/com.example.myapp.Main은 실행할 모듈과 진입점 클래스를 나타냅니다.

결론

Jigsaw 모듈을 활용하면 자바 개발자는 애플리케이션의 구성 요소를 명확하게 정의하고 관리할 수 있습니다. 이를 통해 개발자는 코드의 유지 보수성을 향상시키고, 실행 시간과 메모리 사용량을 최적화할 수 있습니다. Jigsaw 모듈을 적절히 활용하면 더욱 효율적인 자바 애플리케이션을 개발할 수 있습니다.

참고 자료