java1!+2!+3!
Java 11可能是Oracle新的六个月周期中的第一个LTS版本,但是Java 12令人兴奋!
这个新版本带来了八个新功能。
在此处查看官方新闻稿,不要错过Oracle的Sharat Chander撰写的这篇文章 。
Java 12亮点
在我们研究新功能之前,让我们再次澄清一下当一个版本没有长期支持时的含义。 作为短期支持版本,Java 12将仅在下一个Java版本(在本例中为Java 13)发布之前得到Oracle的商业支持。
不过,您应该记住,尽管Java 12不是主要版本,但从某种意义上说它没有长期支持,但它也不是次要版本,因为它具有八个新功能。
这里是一个概述:
189: Shenandoah:一种低暂停时间的垃圾收集器(实验性) –添加了一个新的名为Shenandoah的垃圾收集(GC)算法,该算法通过与正在运行的Java线程同时进行疏散工作来减少GC暂停时间。 Shenandoah的暂停时间与堆大小无关,这意味着无论堆是200 MB还是200 GB,您都将具有相同的一致暂停时间。
230: 微基准测试套件 -微基准添加到JDK源代码的基本套件,使开发人员可以轻松运行现有的微基准,并创建新的。
325: 切换表达式(预览) –扩展switch语句,以便可以将其用作语句或表达式,并且两种形式都可以使用“传统”或“简化”作用域和控制流行为。 这些更改将简化日常编码,并为在交换机中使用模式匹配(JEP 305)做准备。 这将是预览语言功能。
334: JVM常量API –引入一个API,以对关键类文件和运行时工件的名义描述进行建模,特别是可从常量池中加载的常量。
340: 一个AArch64端口,而不是两个 –删除所有与arm64端口有关的源,同时保留32位ARM端口和64位aarch64端口。
341: 默认的CDS存档 –增强了JDK生成过程,以在64位平台上使用默认的类列表生成类数据共享(CDS)存档。
344: G1的可终止混合集合 –如果G1混合集合可能超出暂停目标,则将其中止。
346: 及时从G1返回未使用的承诺内存 –增强了G1垃圾收集器,使其在空闲时自动将Java堆内存返回给操作系统。
Java 12没有原始字符串文字
应当指出, 原始字符串文字功能是从Java 12中撤回的。
尽管如此,有关功能及其功能的讨论仍在继续。 就在几个月前,Brian Goetz通过在邮件列表中的一条新消息重新激发了有关原始字符串文字的讨论,涉及许多主题,包括过程错误,其他语言如何处理原始字符串,下一步应该做什么。
请务必查看消息以获取所有详细信息。
预览功能机制旨在用于高度确信该功能已“完成”的功能,并且在将该功能永久化之前进行重大更改的可能性很小。 此时,经过广泛考虑,吉姆和我不再相信这种情况了,我们认为让其预览当前状态将损害语言。 我们当然对这令人失望感到失望,这意味着将该功能转化为语言需要花费更长的时间,但是我们认为这是最佳选择。
– Oracle的Java语言架构师Brian Goetz
与Oracle聊天
鉴于新版本, 我们采访了Oracle Java产品管理高级总监Donald Smith,讨论了Java 12,新版本的节奏如何影响Java背后的团队的工作流程,这是他的新功能。最激动的是,还有更多!
以下是我们所讨论内容的一小部分:
JAXenter:持续交付周期给开发经验带来什么样的优势和劣势?
唐纳德·史密斯(Donald Smith):对新版本编号及其含义仍有一些误解。 在经历了20年和8个“主要”版本编号之后,我们知道快速连续增加4个版本可能会令人讨厌。 新的发布节奏意味着六个月的发布不是“主要”发布,但它们也不是“次要发布”。 我们越来越注意到,工具链和生态系统的各个部分已经习惯了节奏,含义和适应性。 例如,在非常受欢迎的GA之前,就已经看到IntelliJ支持Java 12语言发生了变化。
请继续关注完整的采访!
java1!+2!+3!