
模块和模块化
JDK
|
31
版本
前面已经讨论了模块的解析过程,却没有提及版本问题。这看上去可能很奇怪,因
为我们习惯于指定具有依赖关系的版本,如 Maven POM。将
版本选择
(
version
selection
)放置在 Java 模块系统的范围之外是一个经过深思熟虑的设计决策。在模
块解析过程中版本不起任何作用,5.7 节将会深入讨论这一决策。
模块解析过程以及额外的检查确保了应用程序在一个可靠的环境中运行,降低了运行时
失败的可能性。在第 3 章,将会学习如何在编译和运行自己的模块时构建一个模块路径。
2.8 在不使用模块的情况下使用模块化 JDK
到目前为止,已经学习了模块系统所引入的许多新概念。此时,你可能想知道模块系统
如何影响现有的代码,很显然,这些代码并没有实现模块化。难道真的需要将代码转换
为模块才能开始使用 Java 9 吗?幸好不是这样。Java 9 可以像以前的 Java 版本一样使用,
而不必将代码移动到模块中。模块系统完全适用于现有的应用程序代码,类路径仍然可
以使用。
但 JDK 本身由模块组成。这两个世界是如何调解的呢?接下来看一下示例 2-5 所示的代
码片段。
示例 2-5:
NotInModule.java
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.LogRecord;
public class NotInModule {
public static ...