Java 9 模块系统:链接时、自定义运行时镜像与实战
模块系统核心增强
- 链接时:编译期与运行期之间的新阶段,使用
jlink组装优化模块,生成定制运行时镜像。 - 模块路径:
javac、jlink、java新增--module-path定位模块定义。 - 模块化 JAR:根目录含
module-info.class的 JAR。 - JMOD 格式:类似 JAR 但可包含原生代码、配置文件,供
jlink使用。
创建模块实战
步骤 1:目录结构
C:\JAVA\src\com.tutorialspoint.greetings\module-info.java
C:\JAVA\src\com.tutorialspoint.greetings\com\tutorialspoint\greetings\Java9Tester.java
步骤 2:模块声明
// module-info.java
module com.tutorialspoint.greetings {
}
步骤 3:源代码
// Java9Tester.java
package com.tutorialspoint.greetings;
public class Java9Tester {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
步骤 4:编译到模块输出目录
mkdir C:\JAVA\mods\com.tutorialspoint.greetings
javac -d mods/com.tutorialspoint.greetings \
src/com.tutorialspoint.greetings/module-info.java \
src/com.tutorialspoint.greetings/com/tutorialspoint/greetings/Java9Tester.java
步骤 5:运行模块
java --module-path mods -m com.tutorialspoint.greetings/com.tutorialspoint.greetings.Java9Tester
输出:Hello World!
进阶:使用 jlink 生成精简运行时
jlink --module-path mods --add-modules com.tutorialspoint.greetings --output greetings-runtime
greetings-runtime\bin\java -m com.tutorialspoint.greetings/com.tutorialspoint.greetings.Java9Tester
生成的 greetings-runtime 仅包含 java.base 与应用模块,体积远小于完整 JDK。
最佳实践
- 模块名采用反向域名风格(如
com.example.app)。 - 最小化
exports,仅暴露公共 API,内部实现包不导出实现强封装。 - 使用
requires transitive传递依赖,简化消费者声明。 - 遗留类路径代码可通过
unnamed module兼容,但建议逐步模块化。
java
- 掌握 C# using 指令:命名空间导入、别名与静态导入全解析
- 精通 Java 运算符:类型、语法与实战示例
- 精通 Java 输入输出:打印、读取与格式化数据
- Java 注释:类型、用法与最佳实践
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java 匿名内部类:定义、语法与实战示例
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
- 深入理解 Java Vector:用法、特性及与 ArrayList 的对比