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.