前言

从去年的3月份起我就在开始读《Effective Java 第二版》,当然,我读的是中文版的;可能是我理解能力还不行,对于书中的内容总是感觉理解困难;就拿第一章的内容「创建和销毁对象」来说吧,这是我读的次数最多的一章,想必原因大家也是明白的,每次我读不下去的时候,我就从头开始读,所以,现在我对这本书的第一章是最为熟悉的了。后来,有一次我上网看到有网友说这本书确实和绝大部分的翻译书籍一样,对于有些原文中的内容翻译的不是很流畅,所以会导致阅读的人感觉难以理解;于是,我就斗胆下了本英文的原版来对照着来看,发现确实这样理解起来就更容易了,所以最后花了一两个月的时间就把整本书给啃完了(好吧,真实的情况是,这段时间我参与了几个项目,编程经验也因此积累了不少,所以对于《Effective Java》这本书里推荐的「最佳实践」有了一点点的思考与理解。)

其实,到目前为止,我还是会时不时地拿起这本书来翻看,每次读都感觉与上一次不一样,这也许就是「温故知新」的意思吧。

第三版新条目

上面的絮絮叨叨大家可以不用关心,现在我就来介绍下第三版中加入的一些新的条目。

大家可以先看下下面这张图,有个整体的概念。
Java新特性对照表

因为,《Effective Java 第二版》的原版是2008年出版的,至今(2018)年已经有十年了,Java 语言在这十年里发展的也比较迅速,Java语言中又有了些新的「最佳实践」了,幸好作者 Joshua Bloch 大叔重操旧笔为我们这群麻瓜带来了与时俱进地「最佳实践」。

这本书的原版是去年完稿的(2017年12月18号),作者正好补充了 Java 7、Java 8 和 Java 9 的一些「最佳实践」。另外,想必关注 Java 发展的麻瓜们已经了解到了 Java 之后的发版规则改了,「Java版本发布周期变更为每六个月一次」。是不是一下子觉得有点紧张了啊,其实也没什么好担心的,新特性的快速添加,对我们也是好事,可以减少一些低效的操作,使用新特性来解放生产力。

Java 7 新特性

  • try-with-resources | 一种新的资源关闭处理方式
  • @SafeVarargs | 忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告

Java 8 新特性

  • Lambdas | 引入函数式编程
  • Streams | 流式数据处理
  • Optionals | 参考Google的Guava类库实现的,用来解决空指针异常(NullPointerException,NPE)问题
  • Default methods in interfaces | 接口中可以有默认实现方法了

Java 9 新特性

  • Modules | 将 JDK 源代码重新组织为模块,对构建系统进行增强以使之支持对模块的编译,并在构建时强制对模块边界的应用

总结

这篇文章只是大概的介绍了下新添加的条目,具体的内容还是需要读者去阅读书籍去了解,本人目前也在阅读当中,后续有什么阅读感悟会及时与诸君分享的。那么,重要的问题来了,如何去获取这本书籍呢?因为中文翻译版本还没有那么快,那么,如果你对你的英文还感到有点自信,可以试试阅读英文原版。这里我就造福下大家了。下载地址:《Effective Java 第三版原版pdf》

参考资料