자바 모듈 시스템과 JPMS(Java Platform Module System) 소개
Java의 모듈화는 오랫동안 기다려진 기능 중 하나입니다. Java 모듈 시스템은 프로젝트를 모듈이라는 단위로 나누어 각 모듈 간의 의존성을 명시하는 것입니다. Java 9부터 도입된 Java Platform Module System(JPMS)은 이러한 모듈 시스템을 구현한 것입니다. 이번 글에서는 Java 모듈 시스템 및 JPMS에 대해 상세히 알아보겠습니다.
자바 모듈 시스템 개요
Java 모듈 시스템은 Java 9에서 도입된 기능입니다. Java 모듈 시스템은 모듈이라는 단위로 프로젝트를 구성하고, 각 모듈 간의 의존성을 선언하는 기능을 제공합니다. 이를 통해 모듈 간의 의존성이 명시적으로 나타나므로, 더욱 명확한 코드 구조와 높은 유연성을 얻을 수 있습니다.
Java 모듈 시스템을 사용하면 다음과 같은 이점이 있습니다.
- 더욱 명확한 코드 구조
- 높은 유연성
- 더욱 쉬운 의존성 관리
Java 모듈 시스템은 소스 코드 뿐만 아니라 라이브러리도 모듈로 구성할 수 있습니다. 이를 통해 라이브러리 간의 의존성도 명시적으로 관리할 수 있습니다.
JPMS(Java Platform Module System) 소개
JPMS는 Java 9에서 도입된 Java Platform Module System의 약어입니다. JPMS는 Java 모듈 시스템을 구현한 것으로, Java 9부터 기본으로 탑재되어 있습니다.
JPMS는 다음과 같은 기능을 제공합니다.
- 모듈 선언
- 모듈 간의 의존성 선언
- 암묵적인 클래스패스 제공
JPMS는 모듈 선언을 위해 module-info.java
파일을 사용합니다. 이 파일은 모듈의 이름, 의존성, 내보내는 패키지 등의 정보를 포함합니다.
모듈의 장점과 구조
Java 모듈 시스템의 가장 큰 장점은 모듈 간의 의존성을 명시적으로 선언할 수 있다는 것입니다. 이를 통해 더욱 명확한 코드 구조와 높은 유연성을 얻을 수 있습니다.
Java 모듈 시스템에서는 모듈 간의 의존성을 requires
키워드를 사용해 선언합니다. 예를 들어, module A
에서 module B
를 사용하는 경우, 다음과 같이 선언합니다.
module A {
requires B;
}
Java 모듈 시스템에서는 내보내는 패키지를 exports
키워드를 사용해 선언합니다. 예를 들어, module A
에서 com.example
패키지를 내보내는 경우, 다음과 같이 선언합니다.
module A {
exports com.example;
}
JPMS 모듈화 예제 및 활용 방법
Java 모듈 시스템을 사용하면 다른 모듈에서 사용되지 않는 클래스나 패키지를 숨길 수 있습니다. 이를 통해 불필요한 코드를 숨기고 더욱 안정적인 애플리케이션을 만들 수 있습니다.
다음은 JPMS를 사용한 간단한 예제입니다.
module com.example.hello {
exports com.example.hello;
}
위 예제에서 com.example.hello
모듈은 com.example.hello
패키지를 내보냅니다. 이를 사용하는 다른 모듈에서는 이 패키지를 사용할 수 있습니다.
module com.example.world {
requires com.example.hello;
}
위 예제에서 com.example.hello
모듈을 사용하는 com.example.world
모듈은 com.example.hello
패키지를 사용할 수 있습니다.
Java 모듈 시스템은 기존의 클래스패스와 호환됩니다. 따라서 기존의 라이브러리도 Java 모듈 시스템으로 변환하여 사용할 수 있습니다.
Java 모듈 시스템은 더욱 명확한 코드 구조와 높은 유연성을 제공합니다. 이를 통해 더욱 안정적인 애플리케이션을 만들 수 있습니다. Java 모듈 시스템을 활용하여 안정적이고 유연한 애플리케이션을 만들어보세요.