在 Java 语境下,**“模块化 Java(Java Module)”**通常指 Java 平台模块系统(JPMS,Java Platform Module System),从 Java 9 开始引入,核心概念是 Module(模块)。
下面用通俗 + 技术结合的方式说明。
Java Module = 一组相关的包(package)+ 明确的边界和依赖声明
它解决了传统 Java 项目中:
的问题。
lib/
a.jar
b.jar
classpath: a.jar:b.jar
问题:
NoClassDefFoundErrormoduleA
├─ package com.a.service
└─ module-info.java
moduleB
├─ package com.b.ui
└─ module-info.java
模块之间显式声明依赖。
module-info.java每个模块根目录有一个特殊文件:
module com.example.user {
requires com.example.common;
exports com.example.user.api;
}
| 指令 | 作用 |
|---|---|
module |
定义模块名 |
requires |
依赖其他模块 |
exports |
对外暴露包 |
opens |
允许反射访问 |
provides |
提供 SPI 实现 |
uses |
使用 SPI 接口 |
exports 的包,外部无法访问public 也不行java.base, java.sql 等| 项目 | classpath | module path |
|---|---|---|
| 依赖 | 隐式 | 显式 |
| 封装 | 弱 | 强 |
| 适用 | 老项目 | Java 9+ |
module com.a {
exports com.a.api;
}
module com.b {
requires com.a;
}
✅ 适合:
❌ 不适合:
Java Module 是 Java 9 引入的“包之上的封装与依赖管理单位”,让 Java 从“能跑就行”走向“结构可控”。
如果你愿意,我也可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。