Java9 模块系统
Java模块系统是Java 9版本中的一项重大更改。 Java添加了此功能,以将Java程序包和代码收集到称为
module 的单个单元中。
在Java的早期版本中,没有用于创建模块化Java应用程序的模块概念。为什么应用程序的大小增加且难以移动。甚至JDK本身的大小也太重,在Java 8中,
rt.jar 文件大小约为64MB。
为了应对这种情况,
Java 9将JDK重组为set ,这样我们就只能使用项目所需的模块。
除了JDK,Java还允许我们创建自己的模块,以便我们可以开发基于模块的应用程序。
模块系统包括下面提供的各种工具和选项。
包括Java工具 javac,jlink和java 的各种选项,我们可以在其中指定位于模块位置的模块路径。
引入了模块化JAR文件。此JAR的根文件夹中包含module-info.class文件。
引入了JMOD格式,它是一种类似于JAR的打包格式,但它可以包含本机代码和配置文件。
JDK和JRE都经过重构以容纳模块。它提高了性能,安全性和可维护性。
Java为模块,类和资源的命名定义了新的URI方案。
Java 9模块化JDK
Java 9模块
模块是Java程序或软件的集合。要描述模块,需要Java文件
module-info.java 。此文件也称为模块描述符,并定义以下内容
模块名称
出口什么
有什么要求
模块名称
它是模块的名称,应遵循反向域模式。就像我们为包裹命名一样,例如com.lidihuo。
如何创建Java模块
创建Java模块需要执行以下步骤。
创建目录结构
创建模块声明器
Java源代码
创建目录结构
要创建模块,建议遵循给定的目录结构,它与反向域模式相同,我们要做的是创建Java中的程序包/项目结构。
注意: 包含模块源的目录名称应等于模块名称。
创建文件
module-info。 java ,在此文件内,使用
module 标识符声明模块,并提供与包含该模块的目录名称相同的模块名称。在我们的例子中,我们的目录名为com.lidihuo。
如果模块主体没有任何模块依赖性,则将其保留为空。使用
module-info.java 名称将此文件保存在
src/com.lidihuo 中。
Java源代码
现在,创建一个Java文件来编译和执行模块。在我们的示例中,我们有一个
Hello.java 文件,其中包含以下代码。
class Hello{
public static void main(String[] args){
System.out.println("Hello from the Java module");
}
}
使用
Hello.java 名称将此文件保存在
src/com.lidihuo/com/lidihuo/中。
编译Java模块
要编译模块,请使用以下命令。
javac -d mods --module-source-path src/ --module com.lidihuo
编译后,它将创建一个包含以下结构的新目录。
现在,我们有了一个可以运行的已编译模块。
运行模块
要运行已编译模块,请使用以下命令。
java --module-path mods/ --module com.lidihuo/com.lidihuo.Hello
输出:
Hello from the Java module
好,我们已经成功创建,编译和执行了Java模块。
查看已编译的模块描述符
要查看已编译的模块描述符,请使用以下命令。
javap mods/com.lidihuo/module-info.class
此命令将向控制台显示以下代码。
Compiled from "module-info.java"
module com.lidihuo {
requires java.base;
}
看,我们创建了一个空模块,但其中包含一个
java.base 模块。为什么?因为所有Java模块都链接到java.base模块,并且它是默认模块。