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. 创建模块

首先,我们需要创建一个新的模块。一个模块是一个包含了一组相关类的单元,可以独立编译、打包和使用。以下是创建模块的步骤:

  1. 创建一个新的目录,作为模块的根目录。例如,myModule
  2. 在模块的根目录下创建一个名为module-info.java的文件。这个文件是模块的描述文件。
  3. module-info.java文件中,使用module关键字定义一个新的模块。例如,module myModule { }

下面是module-info.java文件的示例:

module myModule {
}

2. 编译模块

创建了模块后,我们需要编译它。以下是编译模块的步骤:

  1. 打开命令行终端,并进入模块的根目录。
  2. 使用javac命令编译模块的所有源代码文件。例如,javac -d outDir srcDir/module-info.java srcDir/otherFiles/*.java
    • -d outDir表示将编译生成的类文件输出到指定的目录。
    • srcDir/module-info.java表示模块描述文件的路径。
    • srcDir/otherFiles/*.java表示其他源代码文件的路径。

3. 运行模块

编译了模块后,我们可以运行它。以下是运行模块的步骤:

  1. 打开命令行终端,并进入模块的根目录。
  2. 使用java命令运行模块。例如,java -p outDir -m myModule/myModule.Main
    • -p outDir表示指定模块路径,其中outDir是编译生成的类文件所在的目录。
    • -m myModule/myModule.Main表示指定要运行的模块和主类。

4. 使用模块

运行了模块后,我们可以在其他模块中使用它。以下是使用模块的步骤:

  1. 创建一个新的模块,并在它的module-info.java文件中声明对目标模块的依赖关系。例如,requires myModule;
  2. 在新模块的源代码中,使用模块中的类。

以下是一个使用模块的示例:

module myOtherModule {
    requires myModule;
}

5. 导出模块

有时候,我们希望公开模块的某些部分给其他模块使用。以下是导出模块的步骤:

  1. 在模块的module-info.java文件中,使用exports关键字导出指定的包。例如,exports com.example.package;
  2. 其他模块可以通过声明对该模块的依赖关系来访问导出的包中的类。

以下是一个导出模块的示例:

module myModule {