为什么Java 9不会简单地将类路径上的所有JAR转换为自动模块?

前端之家收集整理的这篇文章主要介绍了为什么Java 9不会简单地将类路径上的所有JAR转换为自动模块?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了理解我们的类别:

>平台显式模块
>应用程序显式模块
>打开模块
>自动模块
>未命名的模块

类路径中的所有类和jar都将是未命名模块的一部分.但为什么我们需要什么呢?自动模块的优势在哪里?我可以“要求”那些该死的传统罐子,使它们成为一个自动模块.我没有把它包括在内吗?

解决方法

至少有两个原因:

>正如常规模块一样,自动模块对模块系统的某些检查是可疑的,例如: not splitting packages.由于类路径上的JAR可以(并且偶尔会)拆分包,因此对它们进行检查将是向后兼容的并且会破坏许多应用程序.
>未命名的模块可以读取所有平台模块,而自动模块只能读取那些进入模块图的模块.这意味着需要java.desktop模块(例如)的JAR将从类路径开始工作,但不能从模块图中工作,除非java.desktop也将其放入图形中(通过依赖项或–add-modules).

我现在没时间检查第二个,但这是the State of the Module system所说的:

After a module graph is resolved,therefore,an automatic module is made to read every other named module,whether automatic or explicit

解决方案适用于声明的依赖项,自动模块声明无.

猜你在找的Java相关文章