为什么Java 9引入了JMOD文件格式?

时间:2017-06-24 04:56:39

标签: java java-9 jigsaw

Java 9有三种方法可以将编译后的代码打包到文件中:

  • JAR
  • JMOD
  • JIMAGE

JIMAGE针对速度和空间进行了优化,并在运行时由JVM使用,因此引入JIMAGE是有道理的。 JIMAGE文件不应发布到maven repos或在编译或链接时使用。

文档声称JMOD可以存储本机代码以及JAR文件无法存储的其他内容,开发人员可以制作和分发自己的JMOD文件。 JDK附带jmods/目录,其中包含JDK的所有模块供用户依赖。

问题:

  • 为什么Java 9引入了JMOD文件格式?
  • 库作者是应该分发JMOD文件还是JAR文件?
  • jmod文件应该发布到maven repos吗?

1 个答案:

答案 0 :(得分:10)

以下是JEP 261: Module System的一些引用,其中包含有关JMOD文件的部分。

<强>为什么吗

来自JEP 261

  

新的JMOD格式超越了JAR文件以包含本机代码,   配置文件以及其他不适合的数据   自然,如果有的话,进入JAR文件。

  

JMOD文件的最终格式是一个开放的问题,但现在它是   基于ZIP文件。

开发者应该发布JMOD文件吗?

请注意,JMOD文件似乎是一种在编译时和链接时合并本机代码(以及其他内容)的方法。来自JEP 261

  

JMOD文件可以在编译时和链接时使用,但不能在运行时使用   时间。

(说实话,我不确定在JDK 9之前如何发布本机代码。)对于绝大多数开发人员(没有本机库或其他角落案例),我们只会发布模块化jar。