前言

前言

1998年,八岁的我拿起了我此生第一本计算机书,那本书讲的是JavaScript和HTML。我当时怎么也想不到,打开那本书会让我见识到编程语言和它们能够创造的神奇世界,并彻底改变我的生活。我被它深深地吸引了。如今,编程语言的某个新特性还会时不时地让我感到兴奋,因为它让我花更少的时间就能够写出更清晰、更简洁的代码。我希望本书探讨的Java 8、9以及10中那些来自函数式编程的新思想,同样能够给你启迪。

那么,你可能会问,这本书以及它的上一版是由何而来的呢?

2011年,Oracle公司的Java语言架构师Brian Goetz分享了一些在Java中添加Lambda表达式的提议,以期获得业界的参与。这重新燃起了我的兴趣,于是我开始传播这些想法,在各种开发者会议上组织Java 8讨论班,并为剑桥大学的学生开设讲座。

到了2013年4月,消息不胫而走,Manning出版社的编辑给我发了封邮件,问我是否有兴趣写一本关于Java 8中Lambda的书。当时我只是个“不起眼”的二年级博士研究生,写书似乎并不是一个好主意,因为它会耽误我提交论文。另一方面,所谓“只争朝夕”,我想写一本小书不会有太多工作量,对吧?(后来我才意识到自己大错特错了!)于是我咨询我的博士生导师米克罗夫特教授,结果他十分支持我写书(甚至愿意为这种与博士学位无关的工作提供帮助,我永远感谢他)。几天后,我们见到了Java 8的布道者富斯科,他有着非常丰富的专业经验,并且因在重大开发者会议上所做的函数式编程演讲而享有盛名。

我们很快就认识到,如果将大家的能量和背景融合起来,就不仅仅可以写出一本关于Java 8 Lambda的小书,而是可以写出(我们希望)一本五年或十年后,在Java领域仍然有人愿意阅读的书。我们有了一个非常难得的机会来深入讨论许多话题,它们不但有益于Java程序员,还打开了通往一扇通往新世界的大门:函数式编程。

现在是2018年,截至今天,本书的上一版已在全世界售出两万本,Java 9已经发布,Java 10也即将发布。经历了无数个漫漫长夜的辛苦工作、无数次的编辑和永生难忘的体验后,我们这本全新修订的包含Java 8、9以及10的《Java实战(第2版)》终于送到了你的手上。希望你会喜欢它!

 

拉乌尔-加布里埃尔·乌尔玛

于剑桥大学

目录

  • 版权声明
  • 对本书上一版的赞誉
  • 前言
  • 致谢
  • 关于本书
  • 关于封面图片
  • 第一部分 基础知识
  • 第 1 章 Java 8、9、10以及11的变化
  • 第 2 章 通过行为参数化传递代码
  • 第 3 章 Lambda表达式
  • 第二部分 使用流进行函数式数据处理
  • 第 4 章 引入流
  • 第 5 章 使用流
  • 第 6 章 用流收集数据
  • 第 7 章 并行数据处理与性能
  • 第三部分 使用流和Lambda进行高效编程
  • 第 8 章 Collection API的增强功能
  • 第 9 章 重构、测试和调试
  • 第 10 章 基于Lambda的领域特定语言
  • 第四部分 无所不在的Java
  • 第 11 章 用Optional取代null
  • 第 12 章 新的日期和时间API
  • 第 13 章 默认方法
  • 第 14 章 Java模块系统
  • 第五部分 提升Java的并发性
  • 第 15 章 CompletableFuture及反应式编程背后的概念
  • 第 16 章 CompletableFuture:组合式异步编程
  • 第 17 章 反应式编程
  • 第六部分 函数式编程以及Java未来的演进
  • 第 18 章 函数式的思考
  • 第 19 章 函数式编程的技巧
  • 第 20 章 面向对象和函数式编程的混合:Java和Scala的比较
  • 第 21 章 结论以及Java的未来
  • 附录 A 其他语言特性的更新
  • 附录 B 其他类库的更新
  • 附录 C 如何以并发方式在同一个流上执行多种操作
  • 附录 D Lambda表达式和JVM字节码