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 的新特性:

  1. Lambda 表达式
  2. 函数式接口
  3. 注解的新能力
  4. 方法引用
  5. 默认方法
  6. 流接口
  7. 新的日期时间接口
  8. Nashorn, JavaScript 引擎 (已在 Java 11 中弃用)
  9. Optional 类