Java 9 引入 Java Platform Module System(JPMS,即 Java Module),核心目的是解决“大型 Java 应用越来越难维护、越来越复杂”的问题。在模块系统出现之前,Java 主要依赖 classpath 和 JAR 包,这种方式在大型、长期演进的项目中暴露出很多结构性缺陷。
下面从动机、解决的核心问题、带来的好处三个层面来解释。
一句话总结:
让 Java 平台和应用在“结构、依赖、封装”上更清晰、更可控、更安全。
在 Java 9 之前,依赖管理主要依赖 classpath + JAR:
public 是“全公开”✅ Module 引入真正的“模块级封装”
ClassNotFoundException / NoClassDefFoundError✅ Module 显式声明依赖(requires)
✅ Module 让 JDK 本身模块化(java.base 等)
✅ Module 精确控制反射权限(opens / opens … to)
module com.example.app {
exports com.example.api;
}
com.example.api 对外可见public 也不可访问module com.example.app {
requires java.sql;
requires com.google.gson;
}
jlink --module-path mods \
--add-modules com.example.app \
--output myapp-runtime
✅ 特别适合:
| 维度 | classpath | Java Module |
|---|---|---|
| 封装 | 无 | 强 |
| 依赖 | 隐式 | 显式 |
| 可预测性 | 低 | 高 |
| 启动性能 | 差 | 更好 |
| 可裁剪 JDK | 否 | 是 |
✅ 现实情况:
因此在以下场景更常见:
Java Module 的引入,是为了让 Java 从“能跑就行”走向“结构清晰、依赖明确、长期可维护”。
如果你愿意,我可以:
你想从哪一块深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。