不同的语言适用于不同的场景,且被市场所检验。java语言为了适应市场一直在变化,其中java8是比较阶跃性的。下面简单说说java8为什么要进行阶跃式的变革。

1.流处理程
汽车生产时是流水线的形式,虽然不同零件的加工有一定序列性,但是各个工位是并行生产的。java8借鉴了这一理念设计了流,使不同的数据项可以在不同的cpu上并行执行,而不需要费力的搞Thread.

2.行为参数化
如果排序方法是sort(),当我们需要按照自定义的方式进行排序时,比如基于CustomerId排序,就要制定一个比较规则。过去的做法是:新建一个Comparator对象,将它传给sort方法,但是这样代码变得很啰嗦而且让”重复现有的行为”的思想不再清晰。java8设计的流提供行为参数化的能力,将compareUsingCustomerId()作为参数传给sort().
图片说明

3.并行与共享可变数据
当数据是共享的可变数据时,我们要避免多个进程同时访问这个数据,一种思路是使用sychronized关键字,但是这会造成很大的开销,与并行处理的初衷违背,java8因此提供了函数式编程。

4.java需要演变
java8开始原理原来的面向对象的思维,而追求函数式编程与面向对象的结合。在函数式编程中:要设计一个从A到B的低于给定价格的交通路线被这种大面上的考虑与具体如何通过数据结构并修改某些参数的实现上的逻辑会区分开来。这种思想看似与面向对象冲突,但是两者结合才能发挥语言的优势。