当前位置: 首页 > 教程 > Java16 >

Java16 介绍

精华
小牛编辑
292浏览
2023-03-14

Java 16 是一个主要功能版本,它为 JAVA 带来了许多特定于 JVM 的更改和特定于语言的更改。它遵循 Java 发布日程推出 Java 10,并于 2021 年 3 月发布,距 Java 15 发布仅六个月。

Java 16 是非 LTS 版本。

Java16的新功能

以下是 Java 16 中引入的主要新功能。

  • JEP 338 : Vector API (Incubator) - 引入了新的 Vector API,允许开发人员显式执行向量操作。

  • JEP 347 : 启用 C++14 语言特性- C++ 14 特性可以在带有 JDK 16 的 C++ 源代码中使用。

  • JEP 357、JEP 369 : 从 Mercurial 迁移到 Git/GitHub - OpenJDK 源代码从 mercurial 迁移到 Git/GitHub

  • JEP 376 : ZGC - 并发线程堆栈处理- Z 垃圾收集器通过将其线程堆栈处理从安全点移动到并发阶段来改进。

  • JEP 380 : Unix 域套接字通道- SocketChannel 和 ServerSocketChannel 现在支持 Unix 域套接字。

  • JEP 386 : Alpine Linux Port - 现在 JDK 可用于 Alpine Linux 和其他使用 musl 实现的 Linux 发行版。

  • JEP 387 : Elastic Metaspace - 通过将未使用的 HotSpot 类元数据或元空间内存快速返回给操作系统来改进元空间内存管理,减少元空间占用空间并简化元空间代码。

  • JEP 388 : Windows/AArch64 端口- 现在 JDK 可以在 AArch64、ARM 硬件服务器或基于 ARM 的笔记本电脑上运行。

  • JEP 389 - Foreign Linker API (Incubator) - Java 代码可以被 C/C++ 调用,反之亦然,使用新的 API 代替 JNI。

  • JEP 390 : 基于值的类的警告 - 如果基于值的类使用同步进行同步,则会引发警告。

  • JEP 392 : Packaging Tool - jpackage 现在是标准而不是孵化器功能。

  • JEP 393 :外部内存访问 API(第三孵化器) - 对外部内存访问 API 的小幅增强。

  • JEP 394 : instanceof 的模式匹配 - instanceOf 的模式匹配现在是一个标准功能。

  • JEP 395 : Record- Record属于标准功能。

  • JEP 396 : 默认情况下强封装 JDK 内部- --illegal-access 选项的默认模式现在是拒绝。之前是允许的。

  • JEP 397 : 密封类(第二次预览) - 密封类的小改进。

Java 16 使用新方法和选项增强了许多 API。我们将在下一章中看到这些变化。

最后更新:

类似资料

  • 主要内容:Java16 Record类的示例Java 14 引入了一个新的类类型Record作为预览功能,以促进不可变数据对象的创建。Java 15 进一步增强了记录类型。在 Java 16 中,Record现在是 JDK 的标准功能。 Java16 Record类的示例 ApiTester.java 编译并运行程序 输出结果为  

  • 主要内容:Java16 打包工具的示例Java 14 引入了一个新的打包工具,基于 javapackager 的 jpackage。javapackager 是在 Java 8 中引入的,是 JavaFX 套件的一部分。由于 JavaFX 从 11 版本的 Java 中分离出来,因此该打包工具在标准产品中不再可用。 这个新工具旨在为操作系统提供本机安装程序。例如,Windows 的 msi/exe,MacOS 的 pkg/dmg,Li

  • 主要内容:ValueBased注解的源码,Java16 ValueBased类警告的示例,输出某些类,例如 java.util.Optional 和 java.time.LocalDateTime,是ValueBased的。ValueBased的类的此类实例是final的且不可变的。此类类具有 @jdk.internal.ValueBased 注释,Java 16 现在会生成编译时警告,以防此类类使用 synchronized 关键字进行同步。包装类是ValueBased的。例如,Doub

  • 主要内容:Java16 sealed密封类的示例Java 15 引入了一个密封类作为预览功能,它提供了对继承的细粒度控制。Java 16 提供了一些小的增强功能,并将此功能保留为预览版。以下是密封类需要考虑的要点 : 密封类是使用 sealed 关键字声明的。 密封类允许使用 permit 关键字声明哪个类可以是子类型。 扩展密封类的类必须声明为sealed 、non-sealed或final的。 密封类有助于在继承中创建有限且可确定的类层次结

  • Java 15 使 ZGC、Z 垃圾收集器成为标准功能。它是 Java 15 之前的一个实验性功能。它是低延迟、高度可扩展的垃圾收集器。 ZGC 是在 Java 11 中作为一项实验性功能引入的,因为开发人员社区认为它太大而无法提前发布。 即使在机器学习应用程序等海量数据应用程序的情况下,ZGC 也具有高性能和高效工作。它确保在处理数据时不会因垃圾收集而长时间停顿。它支持 Linux、Window

  • 主要内容:JEP 338 : Vector  API(Incubator),JEP 347 : 启用 C++14 语言功能,JEP 357/369 : 从 Mercurial 迁移到 GitHub,JEP 380 : Unix 域 Socket 通道JEP 338 : Vector  API(Incubator) JIT Compiler 通过将一些标量运算(一次一项)自动转换为向量运算(一次多项)来优化算术算法。但是开发人员无法控制这个过程。甚至并非所有标量运算都可以转换为向量运算。在这个 J

开发工具