温馨提示×

温馨提示×

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

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

java Module模块是什么

发布时间:2026-10-08 21:17:42 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 里,Module(模块) 是指 Java 9 引入的模块系统(Java Platform Module System,JPMS) 中的一个核心概念。它的目的是让 Java 应用和 JDK 本身在 依赖管理、封装和可见性 上更清晰、更安全。

下面从几个层面给你讲清楚。


一、什么是 Java Module(模块)

Module(模块) 是一个有名字的代码与资源的集合,并且:

  • 明确声明自己 导出(exports)哪些包
  • 明确声明自己 依赖(requires)哪些模块

换句话说:

Module = 一组包 + 模块描述文件(module-info.java)


二、为什么需要模块(背景)

在 Java 9 之前:

  • 所有类都在 classpath 里
  • 任何 public 类都能被随便访问
  • 没有强约束的依赖关系
  • JDK 本身也非常臃肿(比如一个简单程序也要加载整个 rt.jar)

于是 Java 9 引入了 Module System:

✅ 更好的封装
✅ 显式依赖
✅ 更小的运行时(jlink)
✅ 更安全的 API 边界


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

每个模块必须有一个描述文件:

module com.example.mymodule {
    requires java.base;
    requires java.sql;

    exports com.example.mymodule.api;
}

常见指令说明

指令 作用
module 声明模块名
requires 依赖其他模块
exports 导出包(别人才能用)
opens 运行时开放(反射用)
uses 使用服务接口
provides 提供服务实现

四、模块 vs 普通 Java 项目

普通项目(classpath)

src/
 └── com/example/Main.java
  • 所有 public 类都能访问
  • 依赖靠 classpath

模块项目(module path)

src/
 └── module-info.java
 └── com/example/Main.java
  • 不导出的包无法被其他模块访问
  • 依赖靠 module path

五、JDK 本身也是模块化的

Java 9 之后,JDK 被拆成模块:

java.base
java.sql
java.xml
java.logging

你可以只使用你需要的模块。


六、模块的两种类型

1️⃣ 应用模块(Your Module)

你自己写的:

module com.myapp {
    requires java.base;
}

2️⃣ 自动模块(Automatic Module)

把老 jar 放模块路径,自动生成模块名。

3️⃣ 未命名模块(Unnamed Module)

classpath 上的代码,兼容老项目。


七、模块带来的好处总结

✅ 明确依赖
✅ 强封装(不能随便访问内部类)
✅ 避免 classpath 冲突
✅ 支持微服务 / 云原生裁剪 JRE
✅ 更清晰的架构边界


八、一句话总结

Java Module 是 Java 9 引入的一种“带依赖和封装声明的代码组织方式”,用来替代混乱的 classpath,让大型 Java 项目更安全、更清晰、更易维护。

如果你愿意,我也可以:

  • 用 一个完整可运行示例 讲模块
  • 对比 Maven / Gradle 和 Module 的关系
  • 讲 为什么很多公司还没用 Module
向AI问一下细节

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

AI
助
手