温馨提示×

温馨提示×

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

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

Java Module 怎么学习

发布时间:2026-08-31 18:11:49 来源:亿速云 阅读:83 作者:小樊 栏目:编程语言

学习 Java Module(模块系统,JPMS,Java Platform Module System) 可以从「概念 → 语法 → 实践 → 工程化」逐步深入。下面给你一套清晰、可操作的学习路线


一、先搞清:为什么要有 Java Module?

在 Java 9 之前:

  • 所有类都在 classpath
  • 没有强约束的可见性控制
  • 容易出现:
    • 类冲突(jar hell)
    • 内部 API 被误用
    • 启动慢、体积大

Java Module 的目标是: ✅ 明确依赖
✅ 控制可见性
✅ 支持按需裁剪(jlink)
✅ 提升安全性和可维护性


二、核心概念(必须先理解)

1️⃣ Module 是什么?

一个 有名字的、自描述的代码单元

包含:

  • 字节码(.class)
  • module-info.java
  • 资源文件

2️⃣ module-info.java 是核心

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

3️⃣ 关键指令(必须记)

指令 作用
requires 依赖其他模块
exports 对外暴露包
opens 允许反射
provides ... with SPI 实现
uses 使用 SPI 接口

三、从零写一个 Module(最快上手)

1️⃣ 目录结构

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

2️⃣ module-info.java

module com.example.demo {
    exports com.example.demo;
}

3️⃣ Main.java

package com.example.demo;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello Module");
    }
}

4️⃣ 编译 & 运行

javac -d out src/com.example.demo/module-info.java src/com.example.demo/com/example/demo/Main.java
java --module-path out -m com.example.demo/com.example.demo.Main

✅ 成功说明你已入门 Module


四、学习重点(必学)

✅ 1. 包的可见性控制

  • exports vs 不导出
  • 未导出包 编译期+运行期都不可访问

✅ 2. 模块路径 vs classpath

classpath module path
可见性 全公开 严格
冲突
反射 随便 需 opens

✅ 3. 与反射的关系(非常重要)

opens com.example.demo to spring.core;

五、结合真实框架学(效果更好)

✅ Spring Boot + Module(进阶)

  • 不一定强用 Module
  • 但理解 Module 有助于:
    • 看懂 Spring 的 opens
    • 解决 InaccessibleObjectException

✅ 常见错误

Illegal reflective access
Module X does not opens Y to Z

六、工程化 & 工具

1️⃣ Maven 中使用 Module

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <release>17</release>
  </configuration>
</plugin>

2️⃣ 多模块项目

parent
 ├── module-a
 ├── module-b

3️⃣ jlink(Java 模块杀手锏)

jlink --module-path $JAVA_HOME/jmods:out \
      --add-modules com.example.demo \
      --output myapp

七、推荐学习资料(质量高)

官方

  • Oracle: The Java Module System
  • JLS §7.7 Module Declarations

  • 《Java 9 Modularity》
  • 《The Java Module System》(更系统)

视频

  • Baeldung Java Module 教程
  • JavaOfficial YouTube

八、学习建议(很重要)

不要一上来就全项目用 Module
✅ 先写 2–3 个 demo module
✅ 再尝试改造一个小项目
✅ 遇到问题先读错误栈(Module 错误很“直白”)


如果你愿意,我可以:

  • 给你一个 Spring Boot + Module 示例
  • 或帮你 把现有项目改造成 Module
  • 或专门讲 Module 与反射/框架冲突

你更想从哪一块深入?

向AI问一下细节

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

AI