Java 9 中模块的不同编译模式是什么?
一个模块是包的容器,每个模块包含一个模块描述符,其中包括模块名称、模块依赖项,这意味着其他模块的名称取决于它以及它导出的包的名称,这些包只能被依赖它的模块使用。
module com.tutorialspoint.app { /** Modules upon which the module com.tutorialspoint.app depends on */ requires com.tutorialspoint.services; /** Packages exposed by this module which can be used by other modules */ exports com.tutorialspoint.app.util; }
Java 9 模块提供了三种不同的编译模式:传统模式、单模块模式和多模块模式。
模块的编译模式
- 传统模式:当由--source、--target和--release选项定义的编译环境小于或等于8时,可以启用此模式。编译器的行为与Java 8(或更早版本)中的行为相同,在其中我们可以使用传统选项(classpath等),而不是任何与模块相关的选项(--module-path)。在此模式下,我们的代码在运行时作为未命名模块运行。
- 单模块模式:当编译环境为9或更高版本且未使用--module-source-path选项时,可以启用此模式。在此模式下,代码已构建在传统的包分层目录树中。代码具有一个module-info.java文件,并在模块路径而不是类路径上运行。在此结构中,我们可以将我们的module-info.java文件直接放在src目录下。我们不能在同一个目录树中有多个module-info.java文件,因此它被称为单模块模式。
- 多模块模式:当编译环境为9或更高版本且使用了--module-source-path选项时,可以启用此模式。在此模式下,我们将多个模块放在同一个源目录下。在编译时,可以使用--module-source-path选项指定主源目录。每个单独模块的源树可以放置在主源目录下的其自己的子目录中。
广告