第一部分 你好,模块
第1章 第一块拼图
1.1 什么是模块化
1.1.1 用图将软件可视化
1.1.2 设计原则的影响
1.1.3 什么是模块化
1.2 Java 9之前的模块擦除
1.3 Java 9之前的问题
1.3.1 JAR之间未言明的依赖
1.3.2 同名类的覆盖
1.3.3 同一项目不同版本间的冲突
1.3.4 复杂的类加载
1.3.5 JAR的弱封装
1.3.6 手动安全检查
1.3.7 较差的启动性能
1.3.8 死板的Java运行时环境
1.4 鸟瞰模块系统
1.5 你的第一个模块
1.5.1 模块系统实战
1.5.2 非模块化项目基本不受影响
1.6 模块系统的目标
1.6.1 可靠配置:不放过一个JAR
1.6.2 强封装:控制模块内部代码的访问权限
1.6.3 自动化的安全性和改善的可维护性
1.6.4 改善的启动性能
1.6.5 可伸缩的Java平台
1.6.6 非目标
1.7 新旧技能
1.7.1 你将学到什么
1.7.2 你应该知道些什么
1.8 小结
第2章 模块化应用程序剖析
2.1 初识ServiceMonitor
2.2 模块化ServiceMonitor
2.3 将ServiceMonitor划分为模块
2.4 文件的目录结构布局
2.5 声明和模块描述
2.5.1 声明模块依赖
2.5.2 定义模块的公有API
2.5.3 用模块图可视化ServiceMonitor
2.6 编译和打包模块
2.7 运行ServiceMonitor
2.8 扩展模块化代码库
2.9 总结:模块系统的效果
2.9.1 模块系统能为你做什么
2.9.2 模块系统还能为你做些什么
2.9.3 允许可选依赖
2.10 小结
第3章 定义模块及其属性
3.1 模块:模块化应用程序的基石
3.1.1 随JDK发布的Java模块(JMOD)
3.1.2 模块化JAR:内生模块
3.1.3 模块声明:定义模块的属性
3.1.4 模块的众多类型
……
第4章 从源码到JAR构建模块
第5章 运行和调试模块化应用程序
第二部分 改写现实世界中的项目
第6章 迁移到Java 9及以上版本的兼容性挑战
第7章 在Java 9及以上版本中运行应用程序时会反复出现的挑战
第8章 增量模块化现有项目
第9章 迁移和模块化策略
第三部分 模块系统高级特性
第10章 用服务来解耦模块
第11章 完善依赖关系和API
第12章 模块化世界中的反射
第13章 模块版本:可能和不可能
第14章 通过jlink定制运行时镜像
第15章 完成拼图
附录A 类路径回顾
附录B 反射API的高级介绍
附录C 通过统一日志观察JVM
附录D 利用JDeps分析项目的依赖
附录E 通过多发行版JAR支持多个Java版本
展开