Jmod简介

1

jmod 是从 Java 9 开始引入的一种文件格式,用于打包 Java 模块(Java Module) 的工具和文件类型。它在模块化系统(Java Platform Module System, JPMS)中扮演着重要角色。下面是它的主要用途和特点:


🧩 一、基本用途

jmod 文件主要用于:

  1. 存储模块化的 Java 组件

    • 每个 .jmod 文件代表一个模块,包含:

      • .class 文件(已编译的 Java 类)

      • 本地库(如 .so.dll

      • 配置文件、资源文件

      • 模块描述符 module-info.class

  2. 支持创建自定义 JRE(Runtime Image)

    • 搭配 jlink 工具使用,可以从 .jmod 文件中选择需要的模块,打包成一个 精简、专用的运行时镜像

    • 例如:

      jlink --module-path $JAVA_HOME/jmods:mods --add-modules my.module --output myruntime
      
  3. 替代传统的 JAR 用途(在模块化场景下)

    • 虽然 .jar 文件仍然常用,但 .jmod 包含更多元信息,适合在模块层级管理中使用。


⚙️ 二、常用命令

Java 提供了 jmod 工具来创建或查看 .jmod 文件:

功能

命令示例

创建 jmod 文件

jmod create --class-path classes mymodule.jmod

查看 jmod 文件内容

jmod list mymodule.jmod

提取 jmod 文件内容

jmod extract mymodule.jmod

验证模块结构

jmod describe mymodule.jmod


🧠 三、与 JAR 的区别

对比项

JAR

JMOD

主要用途

分发库或应用

存储模块并支持自定义运行时

是否模块化

否(除非带 module-info.class

是否包含原生代码

一般不包含

可以包含 .dll.so

是否可直接运行

可以用 java -jar 运行

不可以直接运行


✅ 四、总结

  • .jmod 文件是 模块系统下的“模块包”,更适合底层系统打包与运行时定制;

  • 主要与 jlink 配合,用于生成定制化 JRE;

  • 对开发者而言,平时还是使用 .jar 来分发代码,而 .jmod 更多用于 JDK 构建、系统集成和运行时优化