在 Java 中,Module(模块) 是 Java 9 引入的一个重要概念,用来在 JVM 级别 对代码进行更好的组织、封装和依赖管理。
在 Java 9 之前,Java 使用的是 ** classpath(类路径)机制**:
public 类、方法、字段 可以被任何地方访问为了解决这个问题,Java 引入了 Java Platform Module System(JPMS,Java 平台模块系统)。
Module 是一个有名字、有边界、有依赖关系的代码和资源的集合。
一个 Module 通常包含:
.class)module-info.java 描述文件module-info.java每个模块都必须有一个 module-info.java 文件:
module com.example.mymodule {
requires java.base;
exports com.example.mymodule.api;
}
| 关键字 | 作用 |
|---|---|
module |
声明模块名 |
requires |
声明依赖的其他模块 |
exports |
对外暴露包(否则不可访问) |
opens |
允许反射访问(如框架使用) |
provides ... with |
提供接口实现(SPI) |
uses |
使用服务接口 |
exports 的包,外部无法访问public 类也不行module A {
// 不导出 internal 包
}
import a.internal.Secret; // ❌ 编译错误
requires java.sql;
Java 9+ 的 JDK 被拆成模块:
java.base
java.sql
java.xml
java.desktop
你可以通过:
java --list-modules
查看所有模块。
| 层级 | 作用 |
|---|---|
| 类 | 最小代码单元 |
| 包 | 逻辑分组 |
| 模块 | 部署 & 访问控制单元 |
✅ 适合:
❌ 不一定需要:
Java 仍然兼容旧方式(classpath)
// module-info.java
module com.a {
exports com.a.api;
}
// module-info.java
module com.b {
requires com.a;
}
Java Module 是一种在 JVM 层面的“包级别的防火墙 + 依赖管理”,让 Java 更安全、更清晰、更现代。
如果你愿意,我可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。