Java 9模块化系统实例
简介
在Java 9中引入了新的模块化系统,它可以帮助我们更好地组织和管理我们的代码。本文将向你介绍如何使用Java 9模块化系统,并通过一个实例来演示如何创建和使用模块。
整体流程
下面是整个过程的流程图:
st=>start: 开始
e=>end: 结束
op1=>operation: 创建模块
op2=>operation: 编译模块
op3=>operation: 运行模块
op4=>operation: 使用模块
op5=>operation: 导出模块
cond=>condition: 是否需要依赖其他模块?
cond2=>condition: 是否需要访问其他模块?
cond3=>condition: 是否需要公开模块的某些部分?
st->op1->cond
cond(yes)->op2
cond(no)->cond2
cond2(yes)->op5
cond2(no)->cond3
cond3(yes)->op4->e
cond3(no)->e
op2->op3->cond2
op5->op4->e
步骤说明
1. 创建模块
首先,我们需要创建一个新的模块。一个模块是一个包含了一组相关类的单元,可以独立编译、打包和使用。以下是创建模块的步骤:
- 创建一个新的目录,作为模块的根目录。例如,
myModule
。 - 在模块的根目录下创建一个名为
module-info.java
的文件。这个文件是模块的描述文件。 - 在
module-info.java
文件中,使用module
关键字定义一个新的模块。例如,module myModule { }
。
下面是module-info.java
文件的示例:
module myModule {
}
2. 编译模块
创建了模块后,我们需要编译它。以下是编译模块的步骤:
- 打开命令行终端,并进入模块的根目录。
- 使用
javac
命令编译模块的所有源代码文件。例如,javac -d outDir srcDir/module-info.java srcDir/otherFiles/*.java
。-d outDir
表示将编译生成的类文件输出到指定的目录。srcDir/module-info.java
表示模块描述文件的路径。srcDir/otherFiles/*.java
表示其他源代码文件的路径。
3. 运行模块
编译了模块后,我们可以运行它。以下是运行模块的步骤:
- 打开命令行终端,并进入模块的根目录。
- 使用
java
命令运行模块。例如,java -p outDir -m myModule/myModule.Main
。-p outDir
表示指定模块路径,其中outDir
是编译生成的类文件所在的目录。-m myModule/myModule.Main
表示指定要运行的模块和主类。
4. 使用模块
运行了模块后,我们可以在其他模块中使用它。以下是使用模块的步骤:
- 创建一个新的模块,并在它的
module-info.java
文件中声明对目标模块的依赖关系。例如,requires myModule;
。 - 在新模块的源代码中,使用模块中的类。
以下是一个使用模块的示例:
module myOtherModule {
requires myModule;
}
5. 导出模块
有时候,我们希望公开模块的某些部分给其他模块使用。以下是导出模块的步骤:
- 在模块的
module-info.java
文件中,使用exports
关键字导出指定的包。例如,exports com.example.package;
。 - 其他模块可以通过声明对该模块的依赖关系来访问导出的包中的类。
以下是一个导出模块的示例:
module myModule {