자바 모듈 시스템과 JPMS(Java Platform Module System) 소개

자바 모듈 시스템과 JPMS(Java Platform Module System) 소개

Java

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 모듈 시스템을 활용하여 안정적이고 유연한 애플리케이션을 만들어보세요.