在其CodeOne会议上,Oracle解释了Java SE 13正式发布后Java的快速发布周期如何带来创新。在过去的二十多年中,Java编程语言新版本的开发速度相对较慢,仅每隔几年就会进行重大更新。甲骨文在2018年推出了一项新的发布策略,如今这一切都发生了变化,现在该策略现在每年可以看到多个Java版本,包括本周早些时候发布的版本。
在9月16日与OpenWorld共同举办的CodeOne会议上,甲骨文宣布Java SE 13(JDK 13)的全面上市,为开发人员提供了可以提高生产率和效率的新功能。在CodeOne主题演讲中,Oracle Java语言架构师Brian Goetz概述了Java在最近几年取得的进展,并强调了Java 13引入的新功能。
Goetz说:“起初,很多人对快速发布的节奏持怀疑态度,因为我们很难像Java这样大的船能迅速变大。” “甚至有人担心Java 10和Java 11可能根本没有功能,并且往后看,很难夸大快速发布节奏已经带来的重大变化。”
Goetz说,每年发布多个版本意味着可以将更多功能交付给开发人员。不过,也许更重要的是现在如何设计功能-在较小的部分中利用发布周期。新周期的一个缺点是,开发人员和最终用户并不总是清楚为什么以及何时需要升级。
Goetz说:“在旧世界中,当我们每隔几年发布大量版本,而这些较大的版本往往具有较大的功能时,就会有足够的升级动力。” “现在,现实是,我们将来不会看到很多大型功能,这不是因为我们没有创新,而是因为这些大型功能将分解为较小的功能并交付使用分阶段进行。”
Java 13
新的Java 13更新是该版本的一个很好的示例,该版本没有大量的新功能,但是随着功能的成熟,为开发人员提供了增量改进。
Java 13的新功能中有一项称为动态CDS(类数据共享)的功能。根据Java增强建议350(JEP 350),该功能的主要目标是提高应用程序类数据共享(AppCDS)的可用性,并消除了用户进行试运行以为每个应用程序创建类列表的需求。
JEP 351在Java 13中定义了一项新功能,使程序可以取消提交未使用的内存。该功能通过将未使用的堆内存返回给操作系统来改善内存管理。
Goetz在主题演讲中概述的Java 13的预览功能之一是JEP 355,它是一种样式优化功能,称为文本块。
他谈到文本块时说:“这不是一个特别复杂的功能。” “但这在日常代码中有很大的不同。”
根据Goetz的说法,没有文本块,如果开发人员想要将HTML Web代码引入Java,则需要使用一些额外的步骤和代码字符串,这些步骤既混乱又容易出错。文本块的JEP详细信息指出,它们的目标是增强Java程序中字符串的可读性,这些Java程序表示使用非Java语言编写的代码。
Java 14及更高版本
尽管每个Java版本都具有新功能,但是Oracle以不同的代号名称对许多主要的开发工作进行了分组,这将引导Java 14及更高版本中的功能开发。
大型项目之一是Amber项目,该项目全部与面向生产力的功能有关。Valhalla项目正在不断改进Java虚拟机。而Project Loom就是要在Java之上支持新的编程模型。
Goetz说:“对于Java来说,这是一个美好的时光。” “我们交付速度更快,每个版本中都有有用的功能,并且面向未来的管道比以往任何时候都更好。”