![]()
内容推荐 Java 9向Java平台引入了模块系统,这是一个非常重要的飞跃,标志着模块化Java软件开发的新纪元。当需要创建灵活且易于维护的代码时,模块化是一个关键的架构设计原则。Sander Mak、Paul Bakker著的《Java9模块化开发(核心原则与实践)》给出了Java模块系统的明确概述,并演示了如何通过创建模块化应用程序来帮助管理以及降低复杂性。 作者引导我们了解了模块系统中的相关概念以及工具,介绍了可以将现有代码迁移到模块中的模式并以模块的方式构建新的应用程序。 了解Java平台自身如何实现模块化 学习模块化如何影响应用程序的设计、编译、打包以及开发 编写自己的模块 使用模式改进任意代码库的可维护性、灵活性以及重用性 学习如何使用服务来创建解耦模块 将现有代码迁移到模块,并学习如何使用并不是模块的现有库 创建优化的自定义运行时映像,从而改变装载模块化Java应用程序的方式 目录 前言 第一部分 Java模块系统介绍 第1章 模块化概述 1.1 什么是模块化 1.2 在Java 9之前 1.2.1 将JAR作为模块? 1.2.2 类路径地狱 1.3 Java 9模块 第2章 模块和模块化JDK 2.1 模块化JDK 2.2 模块描述符 2.3 可读性 2.4 可访问性 2.5 隐式可读性 2.6 限制导出 2.7 模块解析和模块路径 2.8 在不使用模块的情况下使用模块化JDK 第3章 使用模块 3.1 第一个模块 3.1.1 剖析模块 3.1.2 命名模块 3.1.3 编译 3.1.4 打包 3.1.5 运行模块 3.1.6 模块路径 3.1.7 链接模块 3.2 任何模块都不是一座孤岛 3.2.1 EasyText示例介绍 3.2.2 两个模块 3.3 使用平台模块 3.3.1 找到正确的平台模块 3.3.2 创建GUI模块 3.4 封装的限制 第4章 服务 4.1 工厂模式 4.2 用于实现隐藏的服务 4.2.1 提供服务 4.2.2 消费服务 4.2.3 服务生命周期 4.2.4 服务提供者方法 4.3 工厂模式回顾 4.4 默认服务实现 4.5 服务实现的选择 4.6 具有服务绑定的模块解析 4.7 服务和链接 第5章 模块化模式 5.1 确定模块边界 5.2 精益化模块 5.3 API模块 5.3.1 API模块中应该包含什么 5.3.2 隐式可读性 5.3.3 带有默认实现的API模块 5.4 聚合器模块 5.4.1 在模块上构建一个外观 5.4.2 安全拆分模块 5.5 避免循环依赖 5.5.1 拆分包 5.5.2 打破循环 5.6 可选的依赖关系 5.6.1 编译时依赖关系 5.6.2 使用服务实现可选依赖关系 5.7 版本化模块 5.8 资源封装 5.8.1 从模块加载资源 5.8.2 跨模块加载资源 5.8.3 使用ResourceBundle类 第6章 高级模块化模式 6.1 重温强封装性 6.1.1 深度反射 6.1.2 开放式模块和包 6.1.3 依赖注入 6.2 对模块的反射 6.2.1 内省 6.2.2 修改模块 6.2.3 注释 6.3 容器应用程序模式 6.3.1 层和配置 6.3.2 层中的类加载 6.3.3 插件体系结构 6.3.4 容器体系结构 6.3.5 解析容器中的平台模块 第二部分 迁移 第7章 没有模块的迁移 7.1 类路径已经“死”了? 7.2 库、强封装和JDK 9类路径 7.3 编译和封装的API 7.4 删除的类型 7.5 使用JAXB和其他Java EE API 7.6 jdk.unsupported模块 7.7 其他更改 第8章 迁移到模块 8.1 迁移策略 8.2 一个简单示例 8.3 混合类路径和模块路径 8.4 自动模块 8.5 开放式包 8.6 开放式模块 8.7 破坏封装的VM参数 8.8 自动模块和类路径 8.9 使用jdeps 8.10 动态加载代码 8.11 拆分包 第9章 迁移案例研究:Spring和Hibernate 9.1 熟悉应用程序 9.2 使用Java 9在类路径上运行 9.3 设置模块 9.4 使用自动模块 9.5 Java平台依赖项和自动模块 9.6 开放用于反射的包 9.7 解决非法访问问题 9.8 重构到多个模块 第10章 库迁移 10.1 模块化之前 10.2 选择库模块名称 10.3 创建模块描述符 10.4 使用模块描述符更新库 10.5 针对较旧的Java版本 10.6 库模块依赖关系 10.6.1 内部依赖关系 10.6.2 外部依赖关系 10.7 针对多个Java版本 10.7.1 多版本JAR 10.7.2 模块化多版本JAR 第三部分 模块化开发工具 第11章 构建工具和IDE 11.1 Apache Maven 11.1.1 多模块项目 11.1.2 使用Apache Maven创建EasyText示例 11.1.3 使用Apache Maven运行模块化的应用程序 11.2 Gradle 11.3 IDE 第12章 测试模块 12.1 黑盒测试 12.2 使用JUnit进行黑盒测试 12.3 白盒测试 12.4 测试工具 第13章 使用自定义运行时映像进行缩减 13.1 静态链接和动态链接 13.2 使用jlink 13.3 查找正确的服务提供者模块 13.4 链接期间的模块解析 13.5 基于类路径应用程序的jlink 13.6 压缩大小 13.7 提升性能 13.8 跨目标运行时映像 第14章 模块化的未来 14.1 OSGi 14.2 Java EE 14.3 微服务 14.4 下一步
|