深入理解Java模块系统([德]尼科莱•帕洛格)

书: https://pan.baidu.com/s/1untyKaWXt7RJt7udfaVI6A?pwd=44y8
笔记如下:

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注