当前位置: 首页 > 网络应用技术

JDK16的新功能

时间:2023-03-05 22:52:19 网络应用技术

  2021年3月16日,JDK迎来了其JDK16的新版本。尽管JDK16不是LTS版本,但作为JDK17的LTS版本的第一个版本,JDK16为我们带来了17个方面,其中包括包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括各个方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括各个方面,包括方面,包括方面,包括方面,包括方面,包括方面,包括新的语言特征,新工具和内存管理的改进。

  因此,让我们看看JDK16的新功能为我们提供了哪些新功能。

  通常,JDK16具有以下新功能:

  下图是JDK从8到16的新功能的数量:

  您会看到JDK8和JDK9最多,背部的变化基本上较少。

  JDK8引入了一系列非常有用的功能,例如Stream,Lambda,通用类型。JDK9引入了新的JPMS模块化系统,因此它已更改。

  相对而言,JDK10之后的更改基本上较小,并且可能与释放6个月的版本有关。所有版本后,时间相对较短,因此版本中的更改相对较小。

  请注意,JDK16不是LTS版本,9月发布的JDK17是!您可以按照我的关注 - plost -up文章有关JDK17的新功能。直到现在,Java的LTS版本具有JDK8,JDK11和JDK17。您现在使用哪个?

  JDK16:模式匹配和记录有两个主要促销。这些新功能在JDK14中引入了预览版本,并最终成为JDK16的最终版本。

  让我们看一下模式匹配,主要匹配关键字。我们知道一个对象是否是Java中某个类的实例,然后您可以使用instanceof.true,否则返回false。

  但是,在判断后,如果要使用相应的对象,则显示的类型的类型转换如下:

  在JDK16中的模式匹配中,您可以这样写:

  另一个最终版本是JDK14和15中引入的记录。记录是特殊的Java类,主要用于表示不令人满意的对象。

  查看记录的定义:

  上方我们定义一个地址对象。它有两个属性,它们是地址名称和城市。如果编译了上述代码的汇编结果,则可以得到:

  实际上,它等于传统:

  但这在写作方面更加方便和简单。

  从内存管理的改进来看,有两个主要方面:Elastic Metaspace和ZGC的并发线程堆栈处理。

  Metaspace的主要功能是对管理类的元数据的记忆。弹性Metaspace的引入是为了改善热点jvm中的元空间内存的分布和释放,您可以将不必要的内存返回操作系统,更快地返回操作系统,从而减少开销和内存片段。

  弹性Metaspace使用较小的块来分配内存并通过将未使用的元空间内存返回操作系统来改善弹性。它可以提高性能并降低维护成本。

  那么ZGC的并发线程堆栈处理是什么?

  我们知道,ZGC是热点jvm.however中的低删除垃圾回收算法,在线程的堆栈处理过程中,总是有一个约束,始终是safepoints。GC的效率。

  ZGC的并发线程堆栈处理可以确保可以在可以执行GC SafePoint时同时执行Java线程。

  一般而言,套接字通信基于TCP/IP,但是熟悉UNIX的朋友应该知道,UNIX中的所有内容都存在于UNIX中的所有内容,甚至在内部过程中都存在。

  如果是同一主机上的一个过程,则使用UNIX本身的过程间通信(IPC)无疑是最快的方法和更安全的方法。

  因此,它为JDK16中的Unix-Domain插座通道提供了支持。

  这是什么意思?我们知道Java中的相应主要类型具有对象类型,例如Integer中对应的int。

  如果您使用整数构造函数,我们可以构建以下内容:

  但是在JDK16中,该构造函数被放弃了:

  我们可以直接编写:

  一般而言,我们使用的袋子都是JDK的开放式API,但有时它们仍然使用内部使用的一些类。不建议在外部直接使用这种类型。在此之后,您可以直接在标准JDK中找到它。

  这是使用C ++ 14语言特征的JDK底层上的C ++源代码。通用JDK用户无法直接感受到它。

  JDK16添加了一些新的语言功能。在这里,我们主要谈论矢量API和密封类。

  向量API的想法是提供一种矢量计算方法,该方法可以比传统的标量计算方法更好地执行(在支持CPU架构时)。什么是矢量计算?熟悉Pandas的朋友可能会知道Pandas可以很容易地知道Pandas可以轻松计算矩阵。如果实现Java,则需要计算矩阵中的每个元素,这非常麻烦。这就是为什么Python的Pandas图书馆很受欢迎的原因。

  现在也可以完成JDK16。让我们一起看看。首先,这是一种传统的写作方式:

  如果我们希望两个阵列的数量乘以乘,我们只能穿越每个元素。现在写:

  我们构建两个向量变量,并直接调用向量类的MUL方法。

  来自array中有三个参数。第一个是向量的长度,第二个是原始阵列,第三个是偏移。由于int具有4个字节,因此我们在此处使用物种_128。

  密封类是JDK15中引入的概念,该概念指示哪个类允许它们继承它:

  最终表明SEAL2不能再继承。Non密封意味着允许任何类型的继承。

  以上是JDK16的新功能。一般来说,这非常有用。你怎么认为?

  本文的示例Learn-Java-Base-9至20

  最受欢迎的解释,最深的干货,最简单的教程,您不知道的许多技巧正在等待您发现!

  欢迎注意我的公共帐户:“程序的事情”,了解技术并更好地了解您!