模块


  1. Java 中的模块简介

    了解模块系统的基础知识,如何创建和构建模块,以及如何提高可维护性和封装性。

  2. 使用开放模块和开放包进行反射访问

    使用开放包和开放模块来允许对其他封装的包进行反射访问。

  3. 使用 requires static 实现可选依赖项

    使用 requires static 实现可选依赖项 - 以这种方式需要的模块在编译时可访问,但在运行时可能不存在。

  4. 使用 requires transitive 实现隐式可读性

    使用 requires transitive 实现隐式可读性,其中一个模块将对另一个模块的依赖传递下去,允许其他模块在没有显式依赖的情况下读取它。

  5. 限定的 exportsopens

    使用 exports ... to ...opens ... to ... 将导出或开放包的可访问性限制为特定模块。

  6. 使用服务解耦模块

    使用 Java 的 ServiceLoader API 解耦服务的用户和提供者,该 API 使模块系统成为模块声明中 usesprovides 指令的一流概念。

  7. 类路径上的代码 - 未命名模块

    类路径上的所有 JAR 文件,无论是否模块化,都成为未命名模块的一部分。这使得“一切都是模块”,而类路径的混乱仍然存在。

  8. 使用自动模块进行增量模块化

    模块路径上的普通 JAR 文件将成为自动模块,它们可以作为从模块化 JAR 文件到类路径的桥梁。

  9. 在命令行上构建模块

    了解如何使用 javac、jar 和 java 命令手动编译、打包和启动模块化应用程序 - 即使构建工具完成了大部分繁重的工作,了解这些命令也很重要。

  10. 强封装(JDK 内部)

    强封装是模块系统的一个基石。它避免(意外)使用内部 API,主要是 java.* 包中的非公共类型/成员以及大部分 sun.*com.sun.*

  11. 使用 --add-exports--add-opens 绕过强封装

    命令行标志 --add-exports--add-opens 通过在编译或运行时导出包或在运行时打开包以进行反射,来提供对内部 API 的访问,无论是 JDK 的一部分还是依赖项。

  12. 使用 --add-modules--add-reads 扩展模块图

    命令行选项 --add-modules--add-reads 使用额外的模块(节点)和可读性关系(边)扩展模块系统生成的模块图。



更多学习



返回教程列表