ModuleDescriptor — 명명된 모듈을 기술하는 모듈 설명자

ModuleDescriptor — 명명된 모듈을 기술하는 모듈 설명자

ModuleDescriptor명명된 모듈(named module) 을 기술하고 그 각 구성 요소를 얻는 메서드를 정의하는 모듈 설명자예요. JVM 안의 명명된 모듈에 대한 모듈 설명자는 Module.getDescriptor()를 호출해 얻어요.

출처: Java API Reference

본문

모듈 설명자는 ModuleDescriptor.Builder 클래스를 쓰거나, 여기에 정의된 read 메서드로 모듈 선언의 이진 형태(module-info.class)를 읽어 만들 수도 있어요.

모듈 설명자는 normal, open, automatic 모듈을 기술해요. normal 모듈과 open 모듈은 의존성·내보내는 패키지·사용하거나 제공하는 서비스 등 구성 요소를 기술해요. normal 모듈은 특정 패키지를 open할 수 있어요. open 모듈의 설명자는 어떤 open 패키지도 선언하지 않지만(opens()가 빈 집합 반환), JVM에서 인스턴스화되면 모든 패키지가 open된 것처럼 취급돼요. automatic 모듈의 설명자는 의존성을 선언하지 않고(java.base에 대한 필수 의존성 제외), 내보내거나 open한 패키지도 선언하지 않아요. automatic 모듈은 해석 중 특별 취급을 받아 설정의 모든 다른 모듈을 읽어요. JVM에서 인스턴스화되면 모든 unnamed 모듈을 읽고, 모든 패키지가 export·open된 것처럼 취급돼요.

ModuleDescriptor 객체는 불변(immutable) 이라 여러 동시 스레드에서 안전하게 사용할 수 있어요.

Comparable<ModuleDescriptor>를 구현하는 클래스로, 자바 9부터 제공돼요.

중첩 클래스

  • ModuleDescriptor.Builder — 모듈 설명자를 만들기 위한 빌더예요.
  • ModuleDescriptor.Exports — 모듈이 내보내는 패키지를 나타내요.
  • ModuleDescriptor.Modifier — 모듈 설명자의 수정자(open, automatic, synthetic 등)를 나타내는 enum이에요.
  • ModuleDescriptor.Opens — 모듈이 open한 패키지를 나타내요.
  • ModuleDescriptor.Provides — 모듈이 제공하는 서비스를 나타내요.
  • ModuleDescriptor.Requires — 모듈의 의존성을 나타내요.
  • ModuleDescriptor.Version — 모듈 버전을 나타내요.

주요 메서드

  • String name() — 모듈 이름을 반환해요.
  • Set<ModuleDescriptor.Requires> requires() — 모듈의 의존성 집합을 반환해요.
  • Set<ModuleDescriptor.Exports> exports() — 모듈이 내보내는 패키지 집합을 반환해요.
  • Set<ModuleDescriptor.Opens> opens() — 모듈이 open한 패키지 집합을 반환해요.
  • Set<String> uses() — 모듈이 사용하는 서비스 집합을 반환해요.
  • Set<ModuleDescriptor.Provides> provides() — 모듈이 제공하는 서비스 집합을 반환해요.
  • Version version() — 모듈 버전을 반환해요 (없으면 null).

더 알아보기 (Learn more)