Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9에서 모든 모듈 이름을 확인하는 방법

Java 9에서는 모듈(Module) 개념이 새롭게 도입되었습니다. 모듈이란 코드데이터를 하나로 묶은, 이름이 지정된 자기 기술적(self-describing) 컬렉션입니다.

여기서 코드는 자바 클래스인터페이스 같은 타입들을 포함하는 패키지의 집합으로 구성되며, 데이터에는 리소스 및 기타 정적 정보가 포함됩니다. 또한 각 모듈은 고유한 이름, 의존성(dependencies), 그리고 외부에 공개할 내보낸(exported) 패키지 정보를 가지고 있습니다.

모듈 선언 문법

module com.tutorialspoint.mymodule {
    // 모듈 관련 선언문
}

모든 모듈 이름 출력하기

아래 예제에서는 ModuleLayer 클래스를 활용하여 Java 9 환경에서 로드된 모든 모듈의 이름을 화면에 출력하는 방법을 살펴볼 수 있습니다.

ModuleLayer.boot() 메서드는 부트 레이어(boot layer)를 반환하며, 이 레이어에 포함된 모듈 목록을 modules() 메서드로 가져온 뒤 스트림의 forEach()를 이용해 각 모듈의 getName() 값을 순차적으로 출력합니다.

예제 코드

public class AllModulesNamesTest {
    public static void main(String args[]) {
        ModuleLayer.boot().modules().forEach((module) -> {
            System.out.println(module.getName());
        });
    }
}

실행 결과

위 프로그램을 실행하면 JVM에 로드된 전체 모듈의 이름이 아래와 같이 출력됩니다.

jdk.security.jgss
jdk.jartool
javafx.swing
java.security.sasl
jdk.plugin.dom
jdk.dynalink
jdk.javaws
jdk.internal.opt
java.desktop
jdk.snmp
javafx.media
javafx.web
jdk.jsobject
jdk.javadoc
java.security.jgss
jdk.compiler
oracle.net
jdk.deploy
jdk.crypto.mscapi
jdk.jstatd
jdk.crypto.cryptoki
jdk.accessibility
java.sql.rowset
java.prefs
java.instrument
jdk.jconsole
jdk.scripting.nashorn
jdk.internal.le
java.xml
jdk.packager
javafx.base
java.compiler
jdk.localedata
jdk.editpad
jdk.management.jfr
jdk.plugin
jdk.packager.services
java.naming
jdk.security.auth
java.datatransfer
javafx.graphics
jdk.xml.dom
javafx.fxml
jdk.zipfs
oracle.desktop
jdk.jdeps
jdk.net
jdk.internal.ed
jdk.internal.jvmstat
jdk.management.agent
jdk.jshell
java.sql
java.scripting
java.se
jdk.naming.dns
jdk.jdwp.agent
jdk.jfr
jdk.management
jdk.charsets
java.base
jdk.jdi
jdk.unsupported
java.xml.crypto
jdk.attach
jdk.management.resource
java.management
jdk.httpserver
jdk.crypto.ec
java.management.rmi
java.smartcardio
jdk.naming.rmi
java.jnlp
jdk.jlink
javafx.controls
jdk.management.cmm
java.logging
java.rmi
jdk.sctp

출력 결과를 보면 java.base, java.sql, jdk.compiler 등 JDK의 핵심 모듈뿐만 아니라 JavaFX 관련 모듈들까지 다양한 모듈이 포함되어 있는 것을 확인할 수 있습니다. 참고로 실행 환경(JDK 버전, 벤더, 설치된 모듈 구성)에 따라 출력되는 모듈 목록은 달라질 수 있습니다.