个性化阅读
专注于IT技术分析

Java 9模块系统

本文概述

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模块系统1

Java 9模块

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

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

模块名称

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

如何创建Java模块

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

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

创建目录结构

要创建模块, 建议遵循给定的目录结构, 该目录结构与反向域模式相同, 我们确实使用Java创建了包/项目结构。

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

Java9模块系统2

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

module com.srcmini{

}

如果模块主体没有任何模块依赖性, 则将其保留为空。使用module-info.java名称将此文件保存在src / com.srcmini中。

Java源代码

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

class Hello{
	public static void main(String[] args){
		System.out.println("Hello from the Java module");
	}
}

使用Hello.java名称将此文件保存在src / com.srcmini / com / srcmini /中。

编译Java模块

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

javac -d mods --module-source-path src/ --module com.srcmini

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

Java9模块系统3

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

运行模块

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

java --module-path mods/ --module com.srcmini/com.srcmini.Hello

输出:

Hello from the Java module

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

查看已编译的模块描述符

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

javap mods/com.srcmini/module-info.class

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

Compiled from "module-info.java"
module com.srcmini {
  requires java.base;
}

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

赞(0)
未经允许不得转载:srcmini » Java 9模块系统

评论 抢沙发

评论前必须登录!