《Java 9模块化开发 核心原则与实践》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:SanderMak,PaulBakker著;王净等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111601296
  • 页数:234 页
图书介绍:Java 9向Java平台引入了模块系统,这是一个非常重要的飞跃,标志着模块化Java软件开发的新纪元。当需要创建灵活且易于维护的代码时,模块化是一个关键的架构设计原则。本书给出了Java模块系统的明确概述,并演示了如何通过创建模块化应用程序来帮助管理以及降低复杂性。作者引导我们了解了模块系统中的相关概念以及工具,介绍了将现有代码迁移到模块中的模式以及以模块方式构建新应用程序的方法。

前言 1

第一部分 Java模块系统介绍 8

第1章 模块化概述 8

1.1 什么是模块化 9

1.2 在Java 9之前 10

1.2.1 将JAR作为模块? 11

1.2.2 类路径地狱 13

1.3 Java 9模块 14

第2章 模块和模块化JDK 18

2.1 模块化JDK 19

2.2 模块描述符 22

2.3 可读性 23

2.4 可访问性 24

2.5 隐式可读性 25

2.6 限制导出 29

2.7 模块解析和模块路径 29

2.8 在不使用模块的情况下使用模块化JDK 31

第3章 使用模块 33

3.1 第一个模块 33

3.1.1 剖析模块 33

3.1.2 命名模块 35

3.1.3 编译 36

3.1.4 打包 37

3.1.5 运行模块 37

3.1.6 模块路径 39

3.1.7 链接模块 40

3.2 任何模块都不是一座孤岛 41

3.2.1 EasyText示例介绍 41

3.2.2 两个模块 43

3.3 使用平台模块 46

3.3.1 找到正确的平台模块 46

3.3.2 创建GUI模块 47

3.4 封装的限制 51

第4章 服务 54

4.1 工厂模式 54

4.2 用于实现隐藏的服务 57

4.2.1 提供服务 57

4.2.2 消费服务 59

4.2.3 服务生命周期 61

4.2.4 服务提供者方法 62

4.3 工厂模式回顾 64

4.4 默认服务实现 65

4.5 服务实现的选择 66

4.6 具有服务绑定的模块解析 68

4.7 服务和链接 70

第5章 模块化模式 73

5.1 确定模块边界 74

5.2 精益化模块 76

5.3 API模块 76

5.3.1 API模块中应该包含什么 77

5.3.2 隐式可读性 78

5.3.3 带有默认实现的API模块 81

5.4 聚合器模块 82

5.4.1 在模块上构建一个外观 83

5.4.2 安全拆分模块 84

5.5 避免循环依赖 86

5.5.1 拆分包 86

5.5.2 打破循环 87

5.6 可选的依赖关系 90

5.6.1 编译时依赖关系 91

5.6.2 使用服务实现可选依赖关系 95

5.7 版本化模块 96

5.8 资源封装 99

5.8.1 从模块加载资源 100

5.8.2 跨模块加载资源 101

5.8.3 使用ResourceBundle类 102

第6章 高级模块化模式 104

6.1 重温强封装性 104

6.1.1 深度反射 105

6.1.2 开放式模块和包 106

6.1.3 依赖注入 109

6.2 对模块的反射 111

6.2.1 内省 112

6.2.2 修改模块 113

6.2.3 注释 114

6.3 容器应用程序模式 115

6.3.1 层和配置 116

6.3.2 层中的类加载 119

6.3.3 插件体系结构 122

6.3.4 容器体系结构 127

6.3.5 解析容器中的平台模块 132

第二部分 迁移 134

第7章 没有模块的迁移 134

7.1 类路径已经“死”了? 135

7.2 库、强封装和JDK 9类路径 135

7.3 编译和封装的API 138

7.4 删除的类型 141

7.5 使用JAXB和其他Java EE API 142

7.6 jdk.unsupported模块 145

7.7 其他更改 146

第8章 迁移到模块 148

8.1 迁移策略 148

8.2 一个简单示例 149

8.3 混合类路径和模块路径 150

8.4 自动模块 152

8.5 开放式包 155

8.6 开放式模块 157

8.7 破坏封装的VM参数 158

8.8 自动模块和类路径 158

8.9 使用jdeps 161

8.10 动态加载代码 164

8.11 拆分包 166

第9章 迁移案例研究:Spring和Hibernate 167

9.1 熟悉应用程序 167

9.2 使用Java 9在类路径上运行 172

9.3 设置模块 173

9.4 使用自动模块 174

9.5 Java平台依赖项和自动模块 176

9.6 开放用于反射的包 176

9.7 解决非法访问问题 177

9.8 重构到多个模块 178

第10章 库迁移 180

10.1 模块化之前 181

10.2 选择库模块名称 181

10.3 创建模块描述符 184

10.4 使用模块描述符更新库 186

10.5 针对较旧的Java版本 187

10.6 库模块依赖关系 188

10.6.1 内部依赖关系 188

10.6.2 外部依赖关系 191

10.7 针对多个Java版本 192

10.7.1 多版本JAR 192

10.7.2 模块化多版本JAR 195

第三部分 模块化开发工具 198

第11章 构建工具和IDE 198

11.1 Apache Maven 198

11.1.1 多模块项目 200

11.1.2 使用Apache Maven创建EasyText示例 200

11.1.3 使用Apache Maven运行模块化的应用程序 204

11.2 Gradle 205

11.3 IDE 205

第12章 测试模块 207

12.1 黑盒测试 208

12.2 使用JUnit进行黑盒测试 210

12.3 白盒测试 212

12.4 测试工具 216

第13章 使用自定义运行时映像进行缩减 217

13.1 静态链接和动态链接 218

13.2 使用jlink 219

13.3 查找正确的服务提供者模块 223

13.4 链接期间的模块解析 223

13.5 基于类路径应用程序的jlink 224

13.6 压缩大小 225

13.7 提升性能 227

13.8 跨目标运行时映像 228

第14章 模块化的未来 229

14.1 OSGi 230

14.2 Java EE 232

14.3 微服务 232

14.4 下一步 233