温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是java Module模块概念

发布时间:2026-10-08 22:40:01 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 中,Module(模块) 是 Java 9 引入的一个重要概念,用来在 JVM 级别 对代码进行更好的组织、封装和依赖管理。


一、为什么需要 Module(背景)

在 Java 9 之前,Java 使用的是 ** classpath(类路径)机制**:

  • 所有类都在一个“大锅”里
  • 没有强制的访问控制
  • public 类、方法、字段 可以被任何地方访问
  • 容易出现:
    • 类冲突(同名类)
    • 难以维护的大型项目
    • 安全边界不清晰

为了解决这个问题,Java 引入了 Java Platform Module System(JPMS,Java 平台模块系统)。


二、什么是 Java Module

Module 是一个有名字、有边界、有依赖关系的代码和资源的集合。

一个 Module 通常包含:

  • Java 类(.class)
  • 资源文件
  • 一个 module-info.java 描述文件

三、Module 的核心文件:module-info.java

每个模块都必须有一个 module-info.java 文件:

module com.example.mymodule {
    requires java.base;
    exports com.example.mymodule.api;
}

常见关键字

关键字 作用
module 声明模块名
requires 声明依赖的其他模块
exports 对外暴露包(否则不可访问)
opens 允许反射访问(如框架使用)
provides ... with 提供接口实现(SPI)
uses 使用服务接口

四、Module 的关键特性

1️⃣ 强封装(Strong Encapsulation)

  • 未 exports 的包,外部无法访问
  • 即使是 public 类也不行
module A {
    // 不导出 internal 包
}
import a.internal.Secret; // ❌ 编译错误

2️⃣ 显式依赖(Explicit Dependencies)

  • 必须 明确声明依赖
  • 不再“隐式可用”
requires java.sql;

3️⃣ 可靠的配置(Reliable Configuration)

  • 编译期和运行期都会检查模块图
  • 防止:
    • 缺少依赖
    • 循环依赖(部分情况)

4️⃣ 更好的可维护性

  • 系统级模块化(JDK 本身就是模块)
  • 适合:
    • 大型系统
    • 微服务
    • 安全敏感应用

五、JDK 本身就是模块化的

Java 9+ 的 JDK 被拆成模块:

java.base
java.sql
java.xml
java.desktop

你可以通过:

java --list-modules

查看所有模块。


六、模块 vs 包 vs 类

层级 作用
类 最小代码单元
包 逻辑分组
模块 部署 & 访问控制单元

七、什么时候应该用 Module?

✅ 适合:

  • 大型项目
  • 库 / 框架开发
  • 对安全性要求高
  • 想减少不必要的暴露

❌ 不一定需要:

  • 小型项目
  • 传统 classpath 项目
  • 快速原型

Java 仍然兼容旧方式(classpath)


八、简单示例

模块 A

// module-info.java
module com.a {
    exports com.a.api;
}

模块 B

// module-info.java
module com.b {
    requires com.a;
}

九、总结一句话

Java Module 是一种在 JVM 层面的“包级别的防火墙 + 依赖管理”,让 Java 更安全、更清晰、更现代。

如果你愿意,我可以:

  • 用 对比 classpath vs module 讲
  • 给你一个 可运行的 Module 示例项目
  • 讲 Spring Boot 是否要用 Module

你想看哪一个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手