Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách hiển thị tất cả tên module trong Java 9

Java 9 giới thiệu khái niệm Module: đơn vị tự mô tả (self-describing), có tên, phụ thuộc, package xuất khẩu. Code tổ chức thành package chứa class/interface, data bao gồm resource...

Cú pháp khai báo module

module com.tutorialspoint.mymodule {
    // các directive
}

Liệt kê tất cả module trong runtime

Sử dụng ModuleLayer.boot().modules() để lấy stream các module trong boot layer, sau đó map lấy tên.

Ví dụ

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

Kết quả (ví dụ)

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

Phân loại module JDK

  • java.*: Module tiêu chuẩn (Java SE), portable.
  • jdk.*: Module nội bộ JDK, không portable, có thể thay đổi.
  • oracle.*: Module proprietary của Oracle.
  • javafx.*: Module JavaFX (tách riêng từ JDK 11).

Lệnh command-line

# Liệt kê module hệ thống
java --list-modules

# Liệt kê module của ứng dụng (module-path)
java --module-path mods --list-modules

Việc liệt kê module giúp hiểu cấu trúc modular của ứng dụng và JDK.