温馨提示×

温馨提示×

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

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

什么是java Module模块

发布时间:2026-10-30 18:05:53 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Java 中,Module(模块) 是 Java 9 引入的一种新的代码组织与封装机制,用来解决传统 “包(package)+ classpath” 带来的可维护性、安全性和依赖混乱问题。


一、为什么需要 Module?

在 Java 9 之前:

  • 代码主要通过 package + classpath 组织
  • 所有 public 类在 classpath 中都可被访问
  • 没有强制的模块边界
  • 大型项目依赖混乱、容易“类路径地狱”

Java Module 的目标:

  • ✅ 明确的模块边界
  • ✅ 显式声明依赖
  • ✅ 控制哪些类可以被外部访问
  • ✅ 更好的可维护性、安全性、性能(JVM 可优化)

二、什么是 Java Module?

模块(Module) 是一组相关的包和资源的集合,并通过一个描述文件来声明:

  • 模块名
  • 依赖哪些模块
  • 导出(export)哪些包
  • 开放(open)哪些包(用于反射)

模块描述文件是:

module-info.java

三、module-info.java 示例

module com.example.demo {
    requires java.sql;
    requires com.example.util;

    exports com.example.demo.api;
    opens com.example.demo.entity;
}

关键字说明

关键字 作用
module 定义模块名
requires 声明依赖的其他模块
exports 对外暴露的包(只能访问 public 类型)
opens 允许反射访问
provides ... with 服务提供者机制
uses 服务消费

四、模块 vs 包 vs classpath

对比项 Package Module
组织单位 类 包 + 资源
访问控制 仅 public / private 模块级控制
依赖管理 隐式 显式
反射 默认允许 默认禁止

五、模块类型

  1. 应用模块(你自己写的)
  2. 平台模块(JDK 自带,如 java.base)
  3. 自动模块(旧 jar 包被当成模块)
  4. 未命名模块(classpath 上的类)

六、与 classpath 的关系

  • classpath:传统方式,兼容老项目
  • module path:模块方式(Java 9+)

同一程序不能混用 module path 和 classpath 的强约束


七、实际使用示例

项目结构

myapp/
 ├── module-info.java
 └── com/example/demo/Main.java

编译

javac -d out myapp/**/*.java

运行

java --module-path out --module com.example.demo/com.example.demo.Main

八、什么时候该用 Module?

✅ 适合:

  • 大型系统
  • 微服务基础库
  • 需要强封装的框架
  • JDK 内部 API 限制场景

❌ 不一定需要:

  • 小型项目
  • 老项目快速维护

如果你愿意,我也可以:

  • 用 一个最小可运行 Module 示例 演示
  • 对比 Maven / Gradle 中的 Module 使用
  • 解释 Spring Boot 与 Java Module 的关系

你想从哪方面继续了解?

向AI问一下细节

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

AI
助
手