1. 简介
毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。
这个教程包含Java开发者经常面对的几类问题:
语言
编译器
库
工具
JVM
2.Java语言的新特性
2.1 Lambda表达式与Functional接口
2.2 接口的默认方法与静态方法
2.3 方法引用
2.4 重复注解
2.5 更好的类型推测机制
2.6 扩展注解的支持
3. Java编译器的新特性
3.1 参数名字
4. Java 类库的新特性
4.1 Optional
为了解决空指针异常,Google的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。Google Guava的成功,使得Java 8类库引入了Optional类。java.util.Optional<T>
Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。
如果Optional类的实例为非空值的话,isPresent()返回true,否从返回false。为了防止Optional为空值,orElseGet()方法通过回调函数来产生一个默认值。map()函数对当前Optional的值进行转化,然后返回一个新的Optional实例。orElse()方法和orElseGet()方法类似,但是orElse接受一个默认值而不是一个回调函数。
4.2 Stream
4.3 Date/Time API (JSR 310)
4.4 JavaScript引擎Nashorn
4.5 Base64
4.6 并行(parallel)数组
4.7 并发(Concurrency)
5. 新的Java工具
5.1 Nashorn引擎: jjs
5.2 类依赖分析器jdeps
6. Java虚拟机(JVM)的新特性
PermGen空间被移除了,取而代之的是Metaspace(JEP 122)。JVM选项-XX:PermSize与-XX:MaxPermSize分别被-XX:MetaSpaceSize与-XX:MaxMetaspaceSize所代替。