Module System (JPMS) là tính năng lớn Java 9. Module = tập hợp package, chia 2 loại package: Exported (dùng ngoài) và Concealed (chỉ dùng nội bộ).
4 loại Module
| Loại Module | Đặc điểm | Ví dụ |
|---|---|---|
| Application Modules | Module do dev tạo cho chức năng app. Bao gồm dependency third-party. | module com.myapp { ... } |
| Automatic Modules | JAR không có module-info.jar đặt trên module-path. Tự động thành module, tên từ tên JAR. Cho phép dùng thư viện pre-Java 9. | guava-31.1.jar → module guava |
| Unnamed Module | JAR/class trên classpath (không trên module-path). Không tên, đọc được tất cả module, export tất cả package. Dùng cho backward compatibility. | Legacy app trên classpath |
| Platform Modules | JDK được module hóa: java.base, java.sql, java.xml, jdk.httpserver... | java.base, java.logging |
Cấu trúc khai báo module
module <Module-Name> {
requires moduleName;
exports packageName;
}
Lưu ý quan trọng
java.baselà module nền tảng, mọi module đều requires ngầm (không cần khai báo).- Automatic Module cho phép migration dần: dùng thư viện cũ như module.
- Unnamed Module chỉ tồn tại trên classpath – không nên dùng cho code mới.
Hiểu rõ 4 loại module giúp thiết kế kiến trúc modular đúng chuẩn Java 9+.