当今人工智能火热,传统编程赛道倒春寒。现今 Java17 逐渐普及,新一代程序员起手就使用 17 或 21,故而编写一个科普文章,以了解被拆的 JDK 现状,为新一代 java 应用容器化进程铺平道路。
以下是 Java 17 中所有模块的完整列表,按功能分类整理。不同 JDK 发行版(如 Oracle JDK、OpenJDK)可能略有差异,但核心模块基本一致。
标准模块(Java SE 模块)
这些模块属于 Java 标准库,名称以 java. 开头:
| 模块名 | 功能描述 |
|---|---|
java.base | 基础模块(必须包含),包含 java.lang、java.util、java.io 等核心类库 |
java.compiler | Java 编译器 API(javax.tools、javax.annotation.processing) |
java.datatransfer | 数据传输(如剪贴板操作) |
java.desktop | GUI 支持(AWT、Swing、系统托盘等) |
java.instrument | JVM 代理和检测工具(如 java.lang.instrument) |
java.logging | 日志系统(java.util.logging) |
java.management | JMX 管理 API(监控 JVM) |
java.management.rmi | JMX 的 RMI 远程管理支持 |
java.naming | JNDI(Java 命名和目录接口) |
java.net.http | HTTP 客户端(Java 11+ 新增) |
java.prefs | 用户偏好配置(java.util.prefs) |
java.rmi | 远程方法调用(RMI) |
java.scripting | 脚本引擎(如 Nashorn JavaScript 引擎) |
java.se | 聚合模块,包含所有标准模块(除 java.enterprise) |
java.security.jgss | GSS-API 安全认证 |
java.security.sasl | SASL 认证框架 |
java.smartcardio | 智能卡接口(javax.smartcardio) |
java.sql | JDBC 数据库连接 |
java.sql.rowset | JDBC RowSet API |
java.transaction.xa | JTA XA 事务管理 |
java.xml | XML 处理(DOM、SAX) |
java.xml.crypto | XML 加密(javax.xml.crypto) |
JDK 专用模块
这些模块属于 JDK 实现细节或工具支持,名称以 jdk. 或 jdk.internal. 开头:
| 模块名 | 功能描述 |
|---|---|
jdk.accessibility | 辅助技术(如屏幕阅读器)支持 |
jdk.attach | JVM 附加机制(如 com.sun.tools.attach) |
jdk.charsets | 扩展字符集(如 IBM-037、GB18030) |
jdk.compiler | Java 编译器实现(javac) |
jdk.crypto.cryptoki | PKCS#11 加密提供者 |
jdk.crypto.ec | 椭圆曲线加密(ECC)支持 |
jdk.crypto.mscapi | Microsoft CryptoAPI 集成(Windows 平台) |
jdk.dynalink | 动态语言支持库(如 Nashorn 使用) |
jdk.editpad | 编辑面板支持(内部工具) |
jdk.hotspot.agent | JVM HotSpot 诊断代理 |
jdk.httpserver | 轻量级 HTTP 服务器(com.sun.net.httpserver) |
jdk.incubator.foreign | 外部函数和内存 API(实验性功能) |
jdk.jartool | JAR 工具(jarsigner、jar) |
jdk.javadoc | Javadoc 工具 |
jdk.jconsole | JConsole 监控工具 |
jdk.jdeps | jdeps 依赖分析工具 |
jdk.jdi | JVM 调试接口(JDWP) |
jdk.jdwp.agent | JDWP 代理实现 |
jdk.jfr | Java Flight Recorder(JFR,性能分析工具) |
jdk.jlink | jlink 工具(生成自定义运行时镜像) |
jdk.jpackage | jpackage 工具(打包原生应用) |
jdk.jshell | JShell(REPL 交互式编程工具) |
jdk.jsobject | JavaScript 对象支持(浏览器集成) |
jdk.jstatd | jstatd 守护进程(监控 JVM 统计信息) |
jdk.localedata | 本地化数据(如日期格式) |
jdk.management | JVM 管理扩展(如 com.sun.management) |
jdk.management.agent | JMX 管理代理 |
jdk.management.jfr | JFR 管理 API |
jdk.naming.dns | DNS 命名服务提供者 |
jdk.naming.rmi | RMI 命名服务提供者 |
jdk.net | 网络扩展(如 jdk.net.ExtendedSocketOptions) |
jdk.nio.mapmode | 内存映射文件模式支持(ExtendedMapMode) |
jdk.random | 随机数生成器(L32X64MixRandom 等) |
jdk.sctp | SCTP 协议支持 |
jdk.security.auth | 安全认证扩展(如 JAAS) |
jdk.security.jgss | JGSS 安全服务扩展 |
jdk.unsupported | 非标准 API(如 sun.misc.Unsafe,不推荐使用) |
jdk.xml.dom | JDK 扩展的 DOM API(如 org.w3c.dom.css) |
jdk.zipfs | ZIP 文件系统提供者(java.nio.file) |
服务提供者模块
这些模块包含特定服务的实现:
| 模块名 | 功能描述 |
|---|---|
jdk.dynalink | 动态语言支持服务 |
jdk.naming.dns | DNS 命名服务提供者 |
jdk.naming.rmi | RMI 命名服务提供者 |
jdk.security.auth | 安全认证服务提供者 |
查看所有模块的方法
在命令行中运行以下命令,可列出当前 JDK 的所有模块:
java --list-modules
关键注意事项
-
依赖传递性:
java.base是所有模块的隐式依赖。- 使用
jlink创建自定义运行时镜像时,需显式声明所有直接和间接依赖模块。
-
非标准模块:
jdk.unsupported包含高风险 API(如sun.misc.Unsafe),需谨慎使用。jdk.internal.*模块是 JDK 内部实现,禁止直接依赖。
-
平台差异:
- 部分模块(如
jdk.crypto.mscapi)仅在特定操作系统(如 Windows)中可用。
- 部分模块(如
通过合理选择模块,可大幅减少应用分发体积(例如,仅包含 java.base 的运行时镜像约 40MB)。
6672



被折叠的 条评论
为什么被折叠?



