为什么看这本书?

在实际的开发过程,查资料经常会看到 ->、Stream 接口,第一次接触这些时,让我感到有些懵圈,这些都是什么玩法?-> 不是 JavaScript 里的语法糖吗?


为了一探究竟,我查了相关内容,原来都是 Java 8 的新特性。

那 Java 8 到底添加了哪些新特性?它们的用法和作用是什么?用起来爽不爽?

在豆瓣上找到了这本 9.3 分的书,带着以上疑问就开始探索了。



这本书的整体情况:

300 多页,读起来并不轻松。晚上有空就看一点,觉得有用就记一些笔记到博客中,零零散散总共花了大半个月,把这本书看完了。


书中详实地讲了 Java 8 的新特性:Lambda 表达式、函数式数据处理-流(Stream 接口)、接口的默认方法、CompletableFuture 组合式异步编程、Optional、新的时间和日期 API。


其中 Lambda 表达式、函数式数据处理-流(Stream 接口)这两部的例子最为详细


整书一直在强调并行计算,如:Stream 接口如何利用计算机的多核,并行又会带来哪些麻烦;CompletableFuture 如何进行并行计算;Fork/Join 框架如何分解任务,如何合并任务,来提高性能。


推演了为什么接口添加支持默认方法,导致的类似 C++ 的菱形继承问题又是按照什么规则解决的。


为了避免空指针异常,推出了 Optional。


原有的 Date、Calendar 类的存在设计缺陷、表达不直观、偏移复杂,Java 8 推出了新的时间和日期 API。


最后还补充了对函数式编程的思考,与 Scala 语言对比;指出 Lambda 表达式出现异常调试信息不清晰等缺点;以及对 Java 未来的期待。


适合阅读人群:

这并不是一本适合入门的书籍,需要有一定 Java 基础。

书中虽然把问题讲解的很清晰,也包含了大量的使用示例,但没有一定 Java 的使用经验,仍然无法深刻体会出新特性的精髓。


最大的感触:

  • 使用过新的时间和日期 API,获取年月日时分秒,时间日期的计算,比 Date、Calendar 简单好用。

  • 非中间件开发,并行化使用的还是比较少,毕竟出错的概率较高,成本较大。

  • Lambda 表达式和 Stream 接口的使用,确实能简化代码,看起来更容易理解,有种类 SQL 的命令式。

  • Java 8 的改变是有惊喜的。


最后弱弱的感叹一句,Java 14 都出来了,公司生产环境还在用 JDK 6,真是稳到不行啊!泪奔...




上一篇读书笔记:

《Hello First HTML 与 CSS 第2版》读书笔记


今年书单:

备一下 2020 年学习 Java 的 40 本书


进度已慢,怕是完不成了。