ResolvedModule,Module和Observable Module之间有什么区别

时间:2017-09-20 19:57:47

标签: java java-9 jigsaw java-module

以下各项状态的文档:

ResolvedModule

  

已解析模块图中的模块。 ResolvedModule 定义了   配置方法获取已解析模块的配置   是。它定义引用方法来获取对它的引用   模块的内容。

Module

  

表示运行时模块,名为未命名

问: - 这两者有什么不同,是在编译和运行时还是只是模块的不同表示?

另一方面,the module-path定义了

  

内置于编译时或运行时环境的模块,   与模块路径上的工件定义的那些一起   统称为可观察模块的世界

问: - 所有这些都相关吗?有人可以举例说明如何以及在什么时间解释这个概念?

2 个答案:

答案 0 :(得分:3)

从指定了分辨率的java.lang.module包描述开始,您将了解可读性和可读性图。

然后查看Configuration类作为Configuration对象封装可读性图。图中的每个顶点都由ResolvedModule表示。

一旦有了配置,就可以考虑将其实例化为Java虚拟机中的模块图。这将为您提供java.lang.ModuleLayer API。

我认为问题的一部分是询问模型世界ResolvedModule和运行时Module之间是否存在1-1关系。通常是,但没有什么可以阻止您多次实例化配置,这将导致从相同配置创建多个模块层。

现在考虑可能太多了,最好在去那里之前消化设计和API。

答案 1 :(得分:2)

如果您正在寻找描述这些特定课程使用情况的答案,我的理解就超出了我的意思,但这些术语的含义略逊于技术背景:

  • 模块:通俗地用于描述任何模块化工件(模块化JAR或JMOD)
  • 可观察模块:运行时映像中的模块或模块路径上的模块
  • 已解决的模块:模块解析期间添加到模块图中的可观察模块