一:为什么要关心java8

一:为什么要关心java8

  1. 语言生态系统
    把这幅图看作编程问题空间,每个特定地方生长的主要植物就是程序最喜欢的语言。气候变化的意思是,新的硬件或新的编程因素(例如,“我为什么不能用SQL的风格来写程序?”)意味着新项目优选的语言各有不同,就像地区气温上升就意味着葡萄在较高的纬度也能长得好。当然这会有滞后——很多老农一直在种植传统作物。总之,新的语言不断出现,并因为迅速适应了气候变化,越来越受欢迎。
    一:为什么要关心java8

  2. 流处理
    第一个新增编程概念是流处理。流是一系列数据项,一次只生成一项,程序可以从输入流中读取数据项,然后以同样的方式将数据线写入输出流,一个程序的输出流很可能是另一个程序的输入流。基于这一思想,Java 8在java.util.stream中添加了一个Stream API;Stream就是一系列T类型的项目。你现在可以把它看成一种迭代器。Stream API的很多方法可以链接起来形成一个复杂的流水线,思路变成了把这样的流变成那样的流(就像写数据库查询语句时的那种思路),而不是一次只处理一个项目。Java 8可以透明地把输入的不相关部分拿到几个CPU内核上去分别执行你的Stream操作流水线——这是几乎免费的并行,用不着去费劲搞Thread了。

  3. 行为参数化
    把方法(你的代码)作为参数传递给另一个方法的能力。

  4. 函数式编程范式的基石
    流处理,行为参数化等都是属于函数式编程的范畴,在处理过程中是免费并“并行”处理的,这就导致了“不能有共享的可变数据”。所以:“没有共享的可变数据”,“将方法和函数即代码传递给其他方法的能力”是函数式编程范式的基石。

  5. Java 中的函数
    Java 8中新增了函数——值的一种新形式。编程语言的整个目的就在于操作值,要是按照历史上编程语言的传统,这些值因此被称为一等值(或一等公民,这个术语是从20世纪60年代美国民权运动中借用来的)。编程语言中的其他结构也许有助于我们表示值的结构,但在程序执行期间不能传递,比如:类,方法等。因而是二等公民。人们发现,在运行时传递方法能将方法变成一等公民,这也就奠定了行为参数化的思想。

  6. Lambda——匿名函数
    体现了更广义的将函数作为值的思想。比如:(int x) -> x + 1。给这个lambda表达式一个int类型的变量x,返回一个:x+1给你。这就是lambda,没有函数名,只有:参数,箭头,执行体(执行体默认是有retrun返回的)。

  7. 多核
    所有新的台式和笔记本电脑都是多核的。它们不是仅有一个CPU,而是有四个、八个,甚
    至更多CPU,通常称为内核①。问题是,经典的Java程序只能利用其中一个核,其他核的处理
    能力都浪费了。类似地,很多公司利用计算集群(用高速网络连接起来的多台计算机)来高效
    处理海量数据。Java 8提供了新的编程风格,可更好地利用这样的计算机。

  8. 以下是应该学到的关键概念

  • 请记住语言生态系统的思想,以及语言面临的“要么改变,要么衰亡”的压力。虽然Java可能现在非常有活力,但你可以回忆一下其他曾经也有活力但未能及时改进的语言的命运,如COBOL。
  • Java8中新增的核心内容提供了令人激动的新概念和功能,方便我们编写既有效又简洁的程序。
  • 现有的Java编程实践并不能很好地利用多核处理器。
  • 函数是一等值;记得方法如何作为函数式值来传递,还有Lambda是怎样写的。
  • Java8中Streams的概念使得Collections的许多方面得以推广,让代码更为易读,并允 许并行处理流元素。
  • 你可以在接口中使用默认方法,在实现类没有实现方法时提供方法内