《Java8实战》读书笔记

2020-03-26  

为什么看这本书?

在实际的开发过程,查资料经常会看到 ->、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,真是稳到不行啊!泪奔...

 

ConstXiong 备案号:苏ICP备16009629号-3