
书: https://pan.baidu.com/s/1untyKaWXt7RJt7udfaVI6A?pwd=44y8
笔记如下:
- 模块系统概述:Java模块化(JPMS)的核心目标——强封装性、可靠配置与可维护性。
- module-info.java:模块描述符的语法结构,包括
requires
、exports
、opens
等关键指令。 - 模块路径(Module Path):与传统类路径(Classpath)的对比,解析模块解析顺序与冲突解决。
- 强封装实践:通过
exports
控制包的可见性,禁止反射访问未开放API(--illegal-access=deny
)。 - 服务加载机制:
provides
与uses
实现服务接口与实现的解耦(替代META-INF/services
)。 - 模块化JAR:MANIFEST.MF中
Multi-Release
属性支持多版本类共存。 - 迁移非模块化代码:自动模块(Automatic Module)与未命名模块(Unnamed Module)的转换规则。
- 模块反射API:
Module
类动态读取模块信息,addOpens
运行时突破封装限制。 - 模块层(Module Layer):实现动态模块加载(如插件系统),结合
Configuration
与Controller
。 - JLink定制运行时:裁剪JDK模块生成轻量级应用镜像(
jlink --add-modules
)。 - 多模块构建工具:Maven/Gradle多模块项目配置,避免循环依赖。
- 模块与OSGi兼容性:对比JPMS与OSGi在版本化、动态化方面的差异。
- 模块化测试策略:
--patch-module
修补测试代码到被测模块。 - 内部API访问限制:
jdk.internal
模块的强封装与--add-exports
破解方法。 - 模块化设计模式:
- 可选依赖(
requires static
) - 聚合器模块(Aggregator Module)
- 接口分离模块
- 可选依赖(
- 模块化与反射框架:Lombok/Hibernate等工具在模块化环境下的适配问题。
- 模块化迁移案例:剖析Spring Framework 6+的显式模块化改造过程。
- 模块化安全策略:结合
java.security
实现模块粒度的权限控制。 - 模块化性能优化:基于模块依赖树减少JVM加载类数量,提升启动速度。
- 未来演进:Valhalla(值类型)与Panama(FFI)对模块系统的影响。