Java模块打包与自定义运行时镜像指南
1. Java模块打包格式
Java支持四种模块打包格式,分别是:
- 展开目录(exploded directories)
- JAR文件
- JMOD文件
- JIMAGE文件
1.1 JAR文件增强
JDK 9对JAR格式进行了增强,支持模块化JAR和多版本JAR。多版本JAR允许你为不同版本的JDK打包同一版本的库或应用程序。例如,一个多版本JAR可能包含针对JDK 8和JDK 17的库版本1.2的代码。当在JDK 8上使用该多版本JAR时,将使用JDK 8版本的库代码;在JDK 17上使用时,则使用JDK 17版本的库代码。
多版本JAR中特定于JDK版本N的文件存储在 META-INF/versions/N
目录中,而所有JDK版本通用的文件存储在根目录中。对于不支持多版本JAR的环境,此类JAR将被视为普通JAR。在多版本JAR中查找文件的顺序有所不同,会先搜索从当前平台主版本开始的所有版本化目录,然后再搜索根目录。
1.2 JMOD文件
JMOD文件旨在处理比JAR文件更多的内容类型,它可以打包本地代码、配置文件、本地命令和其他类型的数据。JDK模块以JMOD格式打包,供你在编译时和链接时使用,但JMOD格式在运行时不受支持。你可以使用 jmod
工具来处理JMOD文件。
例如,以下命令用于验证前一个命令是否在JMOD文件中记录了任何哈希值:
C:\jd