0Pricing
Java Academy · 课时

module-info.java

声明模块

module-info.java 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

模块系统

Java 平台模块系统(JPMS)于 Java 9 引入,它可以将包组织成具有明确依赖关系和边界的命名模块。

模块声明位于一个特殊文件中:module-info.java。

为什么需要模块

在模块出现之前,类路径只是由 Java 归档包组成的扁平、无结构集合。任何代码都可以访问任意公开类,而缺失的依赖项只有在运行时才会暴露。

模块增加了强封装和可靠配置,并在编译和启动时进行验证。

module-info 的位置

module-info.java 位于源代码树的根目录中,在各个包目录之上。它会编译为模块根目录中的 module-info.class。

每个模块中恰好有一个这样的文件。

最小声明

最简单的模块只需要一个名称。按照惯例,模块名采用反向 DNS 形式,就像包名一样。

module com.example.app {
}

声明依赖关系

使用 requires 依赖另一个模块。每个模块都会隐式依赖 java.base,因此您无需声明它。

module com.example.app {
    requires java.sql;
    requires java.logging;
}

公开一个包

默认情况下,模块中的包是隐藏的。使用 exports 可让其他模块看到某个包的公开类型。

module com.example.app {
    exports com.example.app.api;
}

强封装

任何未使用 export 导出的包,从外部都是完全不可访问的,即使其中包含公共类也是如此。这正是它与类路径环境的重大区别。

内部包会在 JVM 的强制约束下保持内部状态。

模块命名规则

模块名称遵循与包相同的词法规则:使用点分隔的标识符。请选择稳定且全局唯一的名称,因为其他模块会通过名称依赖它。

重命名模块会对其使用方造成不兼容变更。

更完整的示例

实际的声明会同时使用依赖声明和导出声明。此模块依赖日志记录功能,并且只公开其公共应用程序接口包。

module com.example.orders {
    requires java.logging;
    requires com.example.payments;

    exports com.example.orders.api;
}

编译模块

您需要使用支持模块的选项进行编译。--module-source-path 和 -d 选项会告诉编译器源代码和输出所在的位置。

  • javac -d out --module-source-path src $(find src -name '*.java')
  • java --module-path out --module com.example.app/com.example.app.Main

模块路径

模块会从模块路径(--module-path)中解析,这是类路径的模块化继任者。启动器会在运行前读取每个模块的描述符,以构建依赖关系图。

快速检查

请回忆包的默认可见性。

回顾

您已经学习了 module-info.java 的基础知识:

  • 每个模块在源代码根目录中有一个描述符
  • requires 声明依赖关系;java.base 会被隐式依赖
  • exports 公开一个包;其他所有内容都会被封装
  • 使用 --module-path 和 --module 进行构建和运行

下一步:深入了解依赖声明和导出指令。

常见问题解答

「module-info.java」课时是免费的吗?

是的 — 「module-info.java」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「module-info.java」这节课中我会学到什么?

声明模块 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「module-info.java」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. module-info.java
  2. requires 与 exports
  3. 使用 provides/uses 提供服务
  4. 迁移到模块
← 返回 Java Academy