Java 9 模块系统

2025年3月17日 | 阅读 3 分钟

Java 模块系统是 Java 9 版本中的一项重大变化。Java 添加了此功能,以将 Java 包和代码收集到一个名为模块的单元中。

在早期版本的 Java 中,没有模块的概念来创建模块化的 Java 应用程序,这就是应用程序大小增加并且难以移动的原因。即使是 JDK 本身也太大,在 Java 8 中,rt.jar 文件大小约为 64MB。

为了解决这种情况,Java 9 将 JDK 重构为一组模块,以便我们可以仅为我们的项目使用所需的模块。

除了 JDK 之外,Java 还允许我们创建自己的模块,以便我们可以开发基于模块的应用程序。

模块系统包括下面给出的各种工具和选项。

  • 包括各种选项到 Java 工具 javac、jlink 和 java,我们可以在其中指定指向模块位置的模块路径。
  • 引入了模块化的 JAR 文件。此 JAR 在其根文件夹中包含 module-info.class 文件。
  • 引入了 JMOD 格式,这是一种类似于 JAR 的打包格式,除了它可以包含本机代码和配置文件之外。
  • JDK 和 JRE 都被重构以适应模块。它提高了性能、安全性和可维护性。
  • Java 定义了一种新的 URI 方案,用于命名模块、类和资源。

Java 9 模块化 JDK

Java 9 Module System 1

Java 9 模块

模块是 Java 程序或软件的集合。要描述一个模块,需要一个 Java 文件 module-info.java。此文件也称为模块描述符,并定义以下内容

  • 模块名称
  • 它导出什么
  • 它需要什么
Java 9 Module

模块名称

它是模块的名称,应遵循反向域名模式。就像我们命名包一样,例如 com.javatpoint。

如何创建 Java 模块

创建 Java 模块需要以下步骤。

  • 创建目录结构
  • 创建一个模块声明符
  • Java 源代码

创建目录结构

要创建模块,建议遵循给定的目录结构,它与我们创建 Java 中的包/项目结构的逆域名模式相同。

注意:包含模块源文件的目录的名称应与模块的名称相同,例如 com.javatpoint。

Java9 Module System 2

创建一个文件 module-info.java,在此文件中,使用 module 标识符声明一个模块,并提供与包含它的目录名称相同的模块名称。在我们的例子中,我们的目录名称是 com.javatpoint。

如果它没有任何模块依赖项,请将模块主体留空。将此文件保存在 src/com.javatpoint 中,文件名为 module-info.java

Java 源代码

现在,创建一个 Java 文件来编译和执行模块。在我们的示例中,我们有一个 Hello.java 文件,其中包含以下代码。

将此文件保存在 src/com.javatpoint/com/javatpoint/ 中,文件名为 Hello.java

编译 Java 模块

要编译该模块,请使用以下命令。

编译后,它将创建一个包含以下结构的新目录。

Java9 Module System 3

现在,我们有了一个已编译的模块,可以直接运行。

运行模块

要运行已编译的模块,请使用以下命令。

输出

Hello from the Java module

好的,我们已经成功创建、编译和执行了 Java 模块。

查看已编译的模块描述符

要查看已编译的模块描述符,请使用以下命令。

此命令将在控制台中显示以下代码。

看,我们创建了一个空模块,但它包含一个 java.base 模块。为什么?因为所有 Java 模块都链接到 java.base 模块,它是默认模块。


下一主题控制面板