Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 3.52 KB

File metadata and controls

37 lines (27 loc) · 3.52 KB

一、引言

欢迎学习 Java Lambdas。

Java 在其版本 8 中经历了巨大的变化。Java 变得越来越长,这在很大程度上是由这种感觉驱动的。为了与现代函数式编程语言竞争,Java8 引入了类似 lambdas 的函数式编程结构,以更好地支持更具功能性的风格。

本书提供了 lambdas 的简明解释,以及使其在 Java 中工作所需的各种其他特性。除了提供 lambdas 的背景、语法和使用示例外,本书还描述了其他相关特性,如功能接口和类型推断。

通往现代爪哇的道路

Java8 于 2014 年 3 月 18 日发布,比上一版本晚了两年七个月。它受到延迟和技术问题的困扰,但当它最终出现时,它代表了 Java 自 Java5 以来最大的变化之一。

头条当然是 lambdas 和一个支持函数式编程思想的改进版。随着Scala等语言占据中心地位,以及函数式编程的现代趋势,Java 不得不做一些事情来跟上。

尽管 Java 不是也永远不会是一种函数式编程语言,但 Java8 中的更改使开发人员能够比以前的版本更轻松地使用函数式习惯用法。有了规程和经验,您现在可以获得函数式编程的许多好处,而无需求助于第三方库。

现代 Java 特性

为了让您了解 Java 8 的变化有多大,以及为什么它带来了一个新的、现代的 Java,下面是它引入的新特性的一个基本完整的列表:

  • Lambda 支持。
  • 更新了核心 API 以利用 lambdas,包括集合 API 和新的功能包,以帮助构建功能性构造。
  • 使用 lambdas 开发了全新的 API,比如流 API,它带来了功能式的数据处理。例如,流 API 中的mapflatMap等函数可以使用声明方式处理列表,并从外部迭代转移到内部迭代。这反过来允许图书馆供应商担心细节,并根据自己的喜好优化处理。例如,Java 现在提供了一种并行方式来处理流,而不必为细节而困扰开发人员。
  • 对核心 API 的微小更改;为字符串、集合、比较器、数字和数学引入了新的辅助方法。
  • 一些新增功能正在改变人们编写代码的方式。例如,Optional类对某些人来说是熟悉的,它提供了一种更好的处理空值的方法。
  • 有各种并发库的改进。诸如改进的并发哈希映射、可完成的未来、线程安全累加器、改进的读写锁(称为 StampedLock)、工作窃取线程池的实现等等。
  • 支持向接口添加静态方法。
  • 默认方法(也称为虚拟扩展defender 方法
  • 改进了类型推断,并引入了新的构造,如函数接口和方法引用,以更好地支持 lambdas。
  • 引入了一个改进的日期和时间 API(类似于流行的Joda-time库)。
  • IONIO软件包收到了受欢迎的新增内容,可以使用新的 streams API 处理 IO 流。
  • 反射和注释得到了改进。
  • Java8 附带了一个全新的 JavaScript 引擎。Nashorn 取代了 Rhino,速度更快,并且更好地支持 ECMA 脚本。
  • JVM 改进;与 JRocket 的集成已经完成,创建了一个更快的 JVM。
  • JVM 放弃了 perm gen 的想法,而是将本机操作系统内存用于类元数据。这是一笔巨大的交易,可以提供更好的内存利用率。
  • JRocket 集成还将任务控制(jmc)作为标准引入 JDK。它用类似的功能来补充 JConsole 和 VisualVM,但添加了非常便宜的评测。
  • 其他杂项改进,如 JavaFX 改进、base64 编码支持等。