书籍介绍
在日新月异的科技领域,Java作为一门广泛应用的语言,其持续演进确保了开发者能够适应不断变化的需求和最佳实践。《Java 9模块化开发》引领我们进入这个关键版本的世界,揭示了模块系统如何提升代码组织性、封装性和安全性,从而帮助我们构建出更加健壮的应用程序。在这本书中,你将学习到如何利用模块化工具进行测试、构建运行时映像,并探索其对未来软件开发的影响。
作者简介
《Java 9模块化开发》一书深入探讨了Java语言在模块化方面的革新,通过清晰的章节划分和详尽的实例解析,不仅介绍了模块化的概念、最佳实践,还提供了迁移现有代码库到新系统的方法。本书对于理解现代软件工程中的模块化设计原则,以及如何构建稳定、高效的应用程序具有重要价值。
推荐理由
Java编程人员
对模块化和软件架构感兴趣的开发者
希望提升代码质量和维护性的人士
正在或计划迁移项目至Java 9及其后续版本的团队成员。
书籍目录
目录
前言 1
第一部分 Java模块系统介绍
第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
第二部分 迁移
第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
第三部分 模块化开发工具
第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
用户评论
看完我对于java9的模块化目标还是懵逼的。我理解的模块化包含两个目标:一是解决模块的管理问题,即使用模块化后,可以让模块更为清晰,后续的系统更好维护。二是解决动态加载的问题。即当系统模块越来越多时,用户用到哪些模块再加载那些模块,该点包含动态加载和热插拔两个核心技术, 以目前形势来看,java始终定位在编译执行的路上,并没有往动态语言上面靠。那模块化的目标就只实现了管理而已。这就导致模块化变成一个鸡肋,所以关于它的书和技术帖子都寥寥无几。 抛开技术而言,此书也没有讲明白模块化到底解决了什么问题,一直云里雾里。
毕竟模块化是java的深水区
作者从就模式分析
提出问题
解决问题.然后再引入模块的强依赖问题
再用服务化解决等.始终让人带着问题学习
对模块化理解加深很多.缺憾是后面几个章节都是蜻蜓点水的讲解
不够详细
另外部分页面翻译质量有待提高.
有OSGi模块化的影子,还有JDK拆分的考虑,目前使用层面停留在Java8,尚无升级打算
用途不大,当知识科普一下
这本书的排版很差,标点挤压规则差,命令行和显示行排在了一起。翻译也比较差,不是Java语言资深研究者。