甲骨文正式发布Java 14

3月17日,甲骨文正式发布Java 14(Oracle JDK 14)。秉承甲骨文对加速创新的一贯承诺,Java保持每六个月发布一次新版本,为企业和开发人员社区提供新的增强功能。新版Java开发工具包(JDK)提供了许多新特性,其中包括两个备受期待的新预览特性:instanceof模式匹配(JEP 305)和记录类(JEP 359),以及第二次作为预览特性的文本块(JEP 368)。

此外,最新版Java还增加了对switch表达式的Java语言支持,公开了用于持续监视DK Flight Recorder数据的全新API,将低延迟Z垃圾收集器的可用性扩展至macOS和Windows,并在孵化器模块中封装了独立Java应用和新的外部内存访问API,以此支持安全、高效地访问Java堆外部的内存。

“Java 维持了每六个月发布新版本的节奏,让开发人员能尽快尝试到许多原本需要等待数年的功能,这个优势在Java 14中得到了进一步体现。”甲骨文公司Java平台开发副总裁Georges Saab表示,“JDK 14不仅带来很多帮助开发者提高工作效率的增强功能,而且首次提供来自Project Panama等项目的重要内容,包括外部存储器访问API增强(JEP 370),以及Project Amber的持续改进,例如模式匹配(JEP 305)和记录类(JEP 359)。这些重大增强足以证明我们在这些突破性项目所付出的努力。”

Java 14发行版是整个行业通力合作的成果,这里面包括了开放评审、每周构建和一直以来甲骨文工程师通过OpenJDK社区和Java Community Process与全球Java开发人员社区成员间的广泛合作。Java 14的新增特性有:

JEP 305:instanceof模式匹配(Pattern Matching for instanceof,预览版) — 该预览特性可通过instanceof运算符模式匹配来增强Java。使用该特性,开发人员可以移除掉常见的样板代码,写出更加简洁的类型安全代码,从而提高工作效率。

JEP343:打包工具(Packaging Tool,孵化阶段)— 支持开发人员打包Java应用并以平台特定格式进行分发。这有助于开发人员开发那些要求运行时和应用捆绑在单一交付成果中的现代应用。Java 14在孵化器模块中引入了此工具,将非最终版API和非最终版工具提供给开发人员以获取反馈,这些API或工具在未来版本中可能会被保留或移除。

JEP 345:适用于G1的NUMA感知内存分配 (NUMA-Aware Memory Allocation for G1)— 改进非一致性内存访问(NUMA)系统上的G1垃圾收集器的整体性能。

JEP 349:JFR事件流(JFR Event Streaming) — 公开JDK Flight Recorder (JFR)数据以便持续监控。这有助于简化各种工具和应用对JFR数据的访问,并激励进一步创新。

JEP 352:非易失性映射字节缓冲区(Non-Volatile Mapped Byte Buffers) — 在使用非易失性内存时,为JDK添加一种文件映射模式,扩展对非易失性内存的访问。

JEP 358:有用的NullPointerExceptions(Helpful NullPointerExceptions) — 准确描述哪个变量为null并提供其他有用信息,从而提高NullPointerExceptions的可用性。这将提高开发人员的工作效率,改进许多开发和调试工具的质量。

JEP 359:记录类(Records,预览版)— 该预览特性通过一种紧凑的语法来声明保存浅层不可变数据的类。此特性有助于大幅减少该类中的样板代码,不过其最大的优势在于可以将数据建模为数据。用户可以轻松、清楚、简洁地声明这些浅层不可变数据聚合。

JEP 361:Switch表达式(Switch Expressions,标准版)— 在JDK 12和JDK 13中,Switch表达式为预览特性,现已成为标准特性。它允许使用switch作为语句或表达式。此特性简化了日常编码,并为此版本中的模式匹配(JEP 305)预览特性做好了准备。

JEP 364:macOS上的ZGC以及JEP 365:Windows上的ZGC — 尽管大多数需要ZGC的用户也需要Linux环境的可扩展性,但通常需要通过部署和测试以便在macOS和Windows上支持ZGC。还有一些针对Windows和macOS的桌面应用也将受益于ZGC。

JEP 368:文本块(Text Blocks,第二次预览版)— 文本块作为预览特性首次引入Java 13后收到了众多最终用户的反馈。现在,文本块得到了增强,再次作为预览特性出现在Java 14中,目标成为未来JDK版本的标准特性。使用文本块可以轻松表达跨多行源代码的字符串。它提高了Java程序中以非Java语言编写的代码的字符串的可读性;它约定,任何新构造的文本块都可以用字符串相同的字符集表示,解释相同的转义序列并以与字符串相同的方式进行操作。

JEP370:外部内存访问API(Foreign-Memory Access API,孵化阶段)— 此API可允许Java程序安全、高效地访问Java堆之外的外部内存。

对于寻求商业支持的用户和企业,甲骨文还提供一种低成本、可预测的支持解决方案 — Oracle Java SE订阅服务。目前,该服务已得到全球成千上万家不同规模类型组织的广泛使用。通过该服务,用户可以获得Java SE许可证以及所需系统的全面支持,而且可以随需随用。这些客户可以定期直接从甲骨文获得所支持版本经过测试与认证的性能、稳定性及安全性更新。

Java一直以来都是深受软件开发者青睐的首选编程语言。伴随着Java 14创新功能的按时交付,对未来的周详规划以及对生态系统的持续投入,Java平台将继续为现代应用开发注入动力。