为什么要用Java 8?

159 阅读4分钟

阅读时间: 4 分钟

先知在2014年3月18日交付了另一个适应Java的Java 8,这是一个逐步到来的Java的编程改进阶段,所以它包含了不同的动作到Java编程,JVM,工具和图书馆。

Java 8编程语言的改进

  • 兰姆达表达式
  • 方法引用
  • 功能性接口
  • 流API
  • 默认方法
  • Base64 编码 解码
  • 可选类
  • 采集器类
  • ForEach()方法
  • Nashorn JavaScript引擎
  • 并行数组排序
  • IO增强等

兰姆达表达式

Lambda表达式可以帮助我们以功利的方式编写代码。它提供了一个明确的、紧凑的方法,通过使用衔接来执行 SAM 接口(单一抽象方法)。它在分类库中是非常有价值的,它可以帮助我们重复、引导和集中信息。

更多信息和例子:请点击这里

方法参考

方法引用被用来暗示策略的功用性连接点,它是lambda衔接的简化类型,每次当你利用lambda衔接来简单地暗示一个技术时,你可以用策略引用取代你的lambda衔接。

更多信息和例子:请点击这里

功能界面

它只包含一个独特的策略,被称为有用的连接点,所以我们可以有很多默认的和静态的技术,但它也可以为对象类宣布技术。

单一抽象方法接口(SAM接口)也是一个功能接口。

更多信息和例子:请点击这里

可选类

Java在Java 8中提出了一个Optional类,它是一个公共的最后一个类,用来管理Java应用程序中的NullPointerException。为了使用它,我们应该导入java.util bundle来使用这个类,因为它提供了技术来实际查看特定变量是否存在重要价值。

更多信息和例子:请点击这里

forEach

提供了一个新的方法forEach()来迭代元素,它也被定义在Iterable和Stream接口中。

扩展了iterable接口的集合类也可以使用forEach()方法来迭代元素。

这个方法需要一个参数,这个参数是一个函数接口,所以我们可以把lambda表达式作为一个参数。

更多信息和例子:请点击这里

日期/时间API

从Java 8开始,它引入了新的日期和时间API,java.time包包含了Java 8日期和时间类。

更多信息和例子:请点击这里

默认方法

它为连接点内的默认技术提供了一个办公室,这些技术在连接点内被定性,并标有默认的口号,被称为默认策略,这些技术是非唯一的策略,可以有策略体。

更多信息和例子:请点击这里

Nashorn JavaScript引擎

Nashorn是一个JavaScript引擎,它被用来在JVM上有力地执行JavaScript代码,它提供了一个命令行工具jjs,用来执行JavaScript代码。

你可以通过两种方式执行JavaScript代码。

  1. 使用jjs命令行工具,和
  2. 通过嵌入到Java源代码中。

更多信息和例子:请点击这里

字符串连接器

为了构建一个字符序列,在java.util包中增加了一个新的最终类StringJoiner,用一个分隔符来分隔。

更多信息和例子:请点击这里

采集器

它是扩展对象类的最后一个类,它给出了减少的任务,例如,将组件集合到分类中,根据不同的模型对组件进行汇总等等。

更多信息和例子:请点击这里

流API

Java.util.stream包由类、接口和一个枚举组成,允许在组件上进行有用的风格程序,它执行慵懒的计算,因此,它在需要时才执行。

更多信息和例子:请点击这里

流过滤器

Java.util.stream包由类、接口和枚举组成,允许对元素进行函数式操作,它也执行懒散的计算,但只在需要时执行,该方法以谓词作为参数,并返回结果元素的流。

更多信息和例子:请点击这里

Base64 编码和解码

它提供了一个Base64类来管理加密和解码,如果你想在你的源记录中导入java.util.Base64类来利用其策略。

这个类提供了三个独特的编码器和解码器来对每一级的数据进行窜改。

更多信息和例子:请点击这里

并行数组排序

parallelSort()方法已经添加到java.util.Arrays类中,它使用JSR 166 Fork/Join并行性公共池来提供数组的排序,但它是一个重载方法。

更多信息和例子:请点击这里

I/O的增强

在Java 8中,对java.nio.charset.Charset进行了一些升级,并扩大了charset的执行范围,它包含了附带的。

  • 一个新的SelectorProvider可能会进一步发展服务器的执行力或通用性,dev/survey SelectorProvider仍然是默认的。要利用Solaris的场合端口工具,运行时要将框架属性java.nio.channels.spi.Selector设置为值sun.nio.ch.EventPortSelectorProvider。
  • <JDK_HOME>/jre/lib/charsets.jar文件的大小有所减少。
  • java.lang.String(byte[], ∗)构造函数和java.lang.String.getBytes()方法的性能得到改善。