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