开篇做者就提出,Java8所作的改变在许多方面比java历史上任何一次改变都深远。并且好消息是,这些改变会让你编辑程序来更容易,不再用写相似相似于之前的swing中的事件处理函数的啰嗦代码了。
关于多线程,做者也提到,从Java的演变路径来看,他一直致力于让并发编程更容易、出错更少。好比在Java1.0里面有线程和锁的概念,这是当时的最佳实践,但事实证实,不具有专门知识的项目团队,很难可靠地使用这些基本模型。而后在Java 5.0
的时候就添加了工业级的构建模块,好比线程池和并发集合。而后到Java7的时候又添加了,分支合并(Fork/Join)框架,使得并行变得更实用,但仍然很困难。因此,到Java8的时候,对并行有了一个更简单的新思路,不过你仍要遵循一些规则。
第一节,java怎么还在变?
Java在编程语言世界中曾经作的不错,可是编程语言生态系统的气候正在变化,程序员愈来愈多的须要处理所谓的大数据,并但愿利用多核计算机和计算机集群来有效的处理,这意味着要使用并行处理,Java之前对此并不支持。因此Java8对程序员的主要好处在于它提供了更多的编程工具和概念,能以更快,更重要的是能以更为简洁、更易于维护的方式解决新的或是现有的编程问题。
接下来做者介绍了在java8中新增的流处理的概念,这里使用了载有Unix系统中的流式命令做为例子。
第3小节做者介绍了
行为参数化的概念。就是能够把代码或者函数做为参数传递给另一个方法。
接下来做者提到了函数式编程范式的
两个基石,
第一,没有共享的可变数据,第二,将方法和函数传递给其余方法的能力。
第二节,java中的函数
在基于JVM的Scala和Groovy等语言的实践已经证实,让方法的概念做为一等值能够扩充程序员的工具库,从而让编程变得更简单。在这里,做者给了一个简单的例子来比较用Java8以前 和 以后的代码实现一个隐藏文件筛选的例子来讲明函数式编程的优点。
而后又给了一个,从一堆苹果中筛选出,不一样颜色或者不一样重量的苹果的例子来讲明Lambda和Stream的好处。而后这里就引出了流的
内部迭代(这是相对于传统的外部迭代来讲的)的概念。
在这里,做者提到了集合与流的区别,集合主要是为了存储和访问数据,而流主要是用于描述对数据的计算。
第四节,默认方法
开篇做者就提到Java8中加入默认方法主要是为了支持库设计师,让他们可以写出更容易改进的接口。做者用给List接口添加排序方法来讲明这个默认方法带来的好处。
固然,其实我以为Java8的这种默认方法的概念,可能会把接口搞得不三不四的,由于在这样的话接口就包含业务逻辑了,那实际上就至关于C++的抽象类。如何避免C++中臭名昭著的多重继承的菱形继承问题呢?听说在第九章有谈到,那咱们就拭目以待吧!