Java 8新特性终极指南

来源:互联网 发布:刚开网店卖软件好不好 编辑:程序博客网 时间:2024/06/01 10:07

Java 8新特性终极指南


Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。

在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8——lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Java 8中抽象类与接口的比较。

我们也在其他地方引用了15个必读的Java 8教程。当然,我们也探究了Java 8的一些不足之处,比如Java 8的“黑暗面”。

现在,是时候把所有Java 8的重要特性收集整理成一篇单独的文章了,希望这篇文章能给你带来阅读上的乐趣。开始吧!文档下载地址:http://pan.baidu.com/s/1eSetk1k

目录结构   

介绍
Java语言的新特性
2.1 Lambdas表达式与Functional接口

2.2 接口的默认与静态方法

2.3 方法引用

2.4 重复注解

2.5 更好的类型推测机制

2.6 扩展注解的支持

Java编译器的新特性
3.1 参数名字

Java 类库的新特性
4.1 Optional

4.2 Streams

4.3 Date/Time API (JSR 310)

4.4 JavaScript引擎Nashorn

4.5 Base64

4.6 并行(parallel)数组

4.7 并发(Concurrency)

新增的Java工具
5.1 Nashorn引擎: jjs

5.2 类依赖分析器: jdeps

Java虚拟机(JVM)的新特性

总结


==============================================================================

1.介绍

毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。在这篇教程中,我们将一一探索这些变化,并用真实的例子说明它们适用的场景。

这篇教程由以下几部分组成,它们分别涉及到Java平台某一特定方面的内容:

  • Java语言
  • 编译器
  • 类库
  • 工具
  • Java运行时(JVM)

2.Java语言的新特性

不管怎么说,Java 8都是一个变化巨大的版本。你可能认为Java 8耗费了大量的时间才得以完成是为了实现了每个Java程序员所期待的特性。在这个小节里,我们将会涉及到这些特性的大部分。

2.1 Lambda表达式与Functional接口

Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据:函数式程序员对这一概念非常熟悉。在JVM平台上的很多语言(Groovy,Scala,……)从一开始就有Lambda,但是Java程序员不得不使用毫无新意的匿名类来代替lambda。

关于Lambda设计的讨论占用了大量的时间与社区的努力。可喜的是,最终找到了一个平衡点,使得可以使用一种即简洁又紧凑的新方式来构造Lambdas。在最简单的形式中,一个lambda可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如:

Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );

请注意参数e的类型是由编译器推测出来的。同时,你也可以通过把参数类型与参数包括在括号中的形式直接给出参数的类型:

Arrays.asList( "a", "b", "d" ).forEach( ( String e ) -> System.out.println( e ) );

在某些情况下lambda的函数体会更加复杂,这时可以把函数体放到在一对花括号中,就像在Java中定义普通函数一样。例如:

Arrays.asList( "a", "b", "d" ).forEach( e -> {    System.out.print( e );    System.out.print( e );} );