Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
新特性
Java8 新增了非常多的特性,我们主要讨论以下几个:
-
Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
-
方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
-
默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
-
新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
-
Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
-
Date Time API − 加强对日期与时间的处理。
-
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
-
Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
国际化:
- Unicode 增强功能,包括对 Unicode 6.2.0 的支持
- 采用 Unicode CLDR Data 和 java.locale.providers System Property
- 新的日历和区域设置 API
- 能够将自定义资源包安装为扩展
IO 和 NIO
- 基于 Solaris 事件端口机制的 Solaris 的新实现。若要使用,请在将系统属性设置为值 的情况下运行。
SelectorProvider
java.nio.channels.spi.Selector
sun.nio.ch.EventPortSelectorProvider
- 文件大小减小
<JDK_HOME>/jre/lib/charsets.jar
- 构造函数和方法的性能改进。
java.lang.String(byte[], *)
java.lang.String.getBytes()
并发
- 类和接口已添加到包中。
java.util.concurrent
- 已将方法添加到类中,以支持基于新添加的流设施和 lambda 表达式的聚合操作。
java.util.concurrent.ConcurrentHashMap
- 已将类添加到包中以支持可缩放的可更新变量。
java.util.concurrent.atomic
- 已将方法添加到类中以支持公共池。
java.util.concurrent.ForkJoinPool
- 添加该类以提供基于功能的锁,该锁具有三种用于控制读/写访问的模式。
java.util.concurrent.locks.StampedLock