第 10 章 Java 9 新特性
写作本书时(2017 年 6 月),Java SDK 9 已达到功能完成(Feature Complete)状态,但尚未发布。1 在众多新特性中,外界最为关注的当属 Jigsaw 项目(Project Jigsaw),它是 Java 9 引入的一种模块化(modularization)机制。
1Java SE 9 已于 2017 年 9 月 21 日正式发布。截至 2018 年 3 月 1 日,最新版本为 9.0.4。——译者注
这一章的范例将讨论 Java 9 的各种新特性,包括接口中的私有方法以及创建不可变集合所用的工厂方法,并介绍 Stream、Collectors 与 Optional 新增的各种方法。所有范例均在 Java SE 9 Early Access build 174 下测试通过。
另一方面,本章不讨论以下新特性:
- JShell 交互式控制台
- 改进的
try-with-resources代码块 - 钻石运算符(diamond operator)的轻松语法
- 新增的弃用警告
- 用于实现反应式流(Reactive Streams)的 Flow API
- 用于实现栈遍历的 Stack-Walking API
- 改进的 Process API
之所以不讨论这些特性,是因为它们要么用得不多(如钻石运算符、改进的 try-with-resources 代码块与弃用警告),要么较为专业(如 Stack-Walking API 和改进的 Process API)。而文档和教程对 JShell 的描述已很详细,本书不再赘述。
此外,虽然反应式流的引入令人眼前一亮,但开源社区已有 Reactive Streams、RxJava 等类似的 API 存在。对于社区将以何种方式支持新的 Java 9 API,静观其变或许更为稳妥。
这一章的范例有望涵盖最常见的用例,若非如此,本书下一版将增加更多用例。2
2那时候,Jigsaw 的细节应该已经很完善了——但愿如此。
此外,这一章的范例与其他章节略有不同。本书以用例驱动的形式编写和组织内容,每个范例致力于解决一个特定类型的问题。而这一章的部分范例只是对 Java 9 引入的新特性进行概述,不涉及具体类型的问题。
