Java 9向Java服务平台导入了控制模块系统软件,它是1个十分关键的飞越,意味着模块化设计Java开发软件的新世界。当必须建立灵便且便于维护保养的编码时,模块化设计是1个重要的架构模式标准。这书得出了Java控制模块系统软件的确立简述,并演试了怎样根据建立模块化设计手机应用程序来协助管理方法及其减少多元性。
创作者正确引导人们掌握了控制模块系统软件中的有关定义及其小工具,详细介绍了能够将目前编码转移到控制模块中的方式并且以控制模块的方法搭建新的手机应用程序。
掌握Java服务平台本身怎样保持模块化设计
学习培训模块化设计怎样危害手机应用程序的设计构思、编译、装包及其开发设计
撰写自身的控制模块
应用方式改善随意编码库的健壮性、协调能力及其器重性
学习培训怎么使用服务项目来建立解耦控制模块
将目前编码转移到控制模块,并学习培训怎么使用并非控制模块的目前库
建立提升的自定运作时印象,进而更改装车模块化设计Java手机应用程序的方法
Java9向Java服务平台导入了控制模块系统软件,它是1个十分关键的飞越,意味着模块化设计Java开发软件的新世界。当必须建立灵便且便于维护保养的编码时,模块化设计是1个重要的架构模式标准。这书得出了Java控制模块系统软件的确立简述,并演试了怎样根据建立模块化设计手机应用程序来协助管理方法及其减少多元性。创作者正确引导人们掌握了控制模块系统软件中的有关定义及其小工具,详细介绍了将目前编码转移到控制模块中的方式及其以控制模块方法搭建新手机应用程序的方式 。
目录
- 前言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章 模块和模块化JDK18
- 2.1 模块化JDK19
- 2.2 模块描述符22
- 2.3 可读性23
- 2.4 可访问性24
- 2.5 隐式可读性25
- 2.6 限制导出29
- 2.7 模块解析和模块路径29
- 2.8 在不使用模块的情况下使用模块化JDK31
- 第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 编译和封装的API138
- 7.4 删除的类型141
- 7.5 使用JAXB和其他Java EE API142
- 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 使用jdeps161
- 8.10 动态加载代码164
- 8.11 拆分包166
- 第9章 迁移案例研究:Spring和Hibernate167
- 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 多版本JAR192
- 10.7.2 模块化多版本JAR195
- 第三部分 模块化开发工具
- 第11章 构建工具和IDE198
- 11.1 Apache Maven198
- 11.1.1 多模块项目200
- 11.1.2 使用Apache Maven创建EasyText示例200
- 11.1.3 使用Apache Maven运行模块化的应用程序204
- 11.2 Gradle205
- 11.3 IDE205
- 第12章 测试模块207
- 12.1 黑盒测试208
- 12.2 使用JUnit进行黑盒测试210
- 12.3 白盒测试212
- 12.4 测试工具216
- 第13章 使用自定义运行时映像进行缩减217
- 13.1 静态链接和动态链接218
- 13.2 使用jlink219
- 13.3 查找正确的服务提供者模块223
- 13.4 链接期间的模块解析223
- 13.5 基于类路径应用程序的jlink224
- 13.6 压缩大小225
- 13.7 提升性能227
- 13.8 跨目标运行时映像228
- 第14章 模块化的未来229
- 14.1 OSGi230
- 14.2 Java EE232
- 14.3 微服务232
- 14.4 下一步233