Java 8 中的新特性
Java 8 (又叫 JDK 1.8) 是由 Oracle 公司于 2014 年 3 月 18 日发布的是 Java 语言开发的一个主要版本, 也是一个长期支持(LTS)版本,它涵盖了许多新的特性.
Java 8 的新特性
Java8 新增了非常多的特性,以下是本文会重点介绍的新特性:
-
Lambda 表达式 − 该特性让您可以将函数性(functionality)的表达式作为方法的参数, 或者将代码作为数据使用. 使用 Lambda 表达式, 您可以使用更简便的方式来实现单方法接口(只有一个方法的接口, 称之功能接口).
-
方法引用 − 为已具有名称的方法提供了易于理解的 lambda 表达式, 这点写起代码来非常爽.
-
默认方法 − 允许将新的函数性的表达式添加到库的接口中, 以确保这些接口的旧版本代码的二进制兼容性.
-
重复注解 - 支持对同一个声明或类型多次使用同一个注解类型.
-
类型注解 - 支持在任何使用类型的地方应用注解,而不仅限于声明(declare). 与可插拔式系统(Pluggable Type System)结合使用, 可以增强您代码的类型检测.
-
流接口(Stream API) − 针对合集(Collections) 在 java.util.stream 中添加了新的流接口, 从而支持了针对元素的函数式编程的操作. 流接口集成在了合集接口(Collections API)中, 可以对集合进行批量操作,例如: 顺序或并行的 map-reduce 转换.
-
日期时间接口 − 增强了对日期与时间的处理, 如线程安全, 本地化时间, 市区等
-
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
-
Nashorn JavaScript 引擎 − Java 8 提供了一个新 Javascript 引擎: Nashorn javascript, 它允许我们在JVM上运行特定的 javascript 应用. (该特性已在 Java 11 中声名弃用, 并会在将来的版本中移除.)
- 安全性得到了增强
关于的新特性描述, 请参见官网中文文档: JDK 8 中的新特性
虽然是关于 Java 8 的语言特性, 但是目前的 LTS 版本已经出到了 11, 经过这些年的发展, 有些接口可能也已经有了差异, 因此本文将采用新的 Java 11 作为基础进行学习和检验, 你可以使用以下命令查看当前 jdk 的版本:
$ java -version openjdk version "11.0.10" 2021-01-19 LTS OpenJDK Runtime Environment (build 11.0.10+9-LTS) OpenJDK 64-Bit Server VM (build 11.0.10+9-LTS, mixed mode)
下面是我们将要详细介绍的各个 Java 8 的新特性:
- Lambda 表达式
- 函数式接口
- 注解的新能力
- 方法引用
- 默认方法
- 流接口
- 新的日期时间接口
- Nashorn, JavaScript 引擎 (已在 Java 11 中弃用)
- Optional 类