Java 12 / JDK 12 正式发布

Java 12 / JDK 12 正式发布Java 12 / JDK 12 正式发布

大家好,又见面了,我是你们的朋友全栈君。

自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日,也就是今天 Java 12 正式发布了!

010733_5XvB_2720166.png
△ JDK 12 GA 发布

Java 12 带来了一系列新特性:

189 Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)    低暂停时间的 GC
230 Microbenchmark Suite    微基准测试套件
325 Switch Expressions (Preview)    Switch 表达式
334 JVM Constants API    JVM 常量 API
340 One AArch64 Port, Not Two    只保留一个 AArch64 实现
341 Default CDS Archives    默认类数据共享归档文件
344 Abortable Mixed Collections for G1    可中止的 G1 Mixed GC
346 Promptly Return Unused Committed Memory from G1    G1 及时返回未使用的已分配内存

下边分别来看看:

Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

Shenandoah:低暂停时间的 GC(实验性功能)

新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行 evacuation 工作来减少 GC 暂停时间。使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是 200 MB 还是 200 GB,都将具有相同的暂停时间。

Microbenchmark Suite

微基准测试套件

JDK 源码中新增了一套微基准测试套件,使开发人员可以轻松运行现有的微基准测试并创建新的基准测试。

Switch Expressions (Preview)

Switch 表达式(预览功能)

扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

JVM Constants API

JVM 常量 API

引入 API 对关键类文件和运行时工件建模,特别是可从常量池加载的常量。在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。

One AArch64 Port, Not Two

只保留一个 AArch64 实现

删除了与 arm64 相关的所有源,同时保留 32 位 ARM 实现和 64 位 aarch64。

JDK 中存在两套 64 位 ARM 实现,主要存在于 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录。两者都实现了 aarch64,现在将只保留后者,删除由 Oracle 提供的 arm64。这将使贡献者将他们的精力集中在单个 64 位 ARM 实现上,并消除维护两套实现所需的重复工作。

Default CDS Archives

默认类数据共享归档文件

针对 64 位平台,使用默认类列表增强 JDK 构建过程以生成类数据共享(class data-sharing,CDS)档。

Abortable Mixed Collections for G1

可中止的 G1 Mixed GC

如果 G1 Mixed GC 存在超出暂停目标的可能性,则使其可中止。

Promptly Return Unused Committed Memory from G1

G1 及时返回未使用的已分配内存

增强 G1 GC,在空闲时自动将 Java 堆内存返回给操作系统。为了实现向操作系统返回最大内存量的目标,G1 将在应用程序不活动期间定期执行或触发并发周期以确定整体 Java 堆使用情况。这将导致它自动将 Java 堆的未使用部分返回给操作系统。而在用户控制下,可以可选地执行完整的 GC,以使返回的内存量最大化。

上述每一个新特性都有详细的说明文档,可以点击相应链接查看。

观望 JDK 13

根据 JDK 13 的迭代计划,预计将于 2019 年 9 月发布 —— Java 现在采取“半年发布一次版本”的模式。

可访问 http://openjdk.java.net/projects/jdk/13/ 查看 JDK 13 的相关信息。

讨论

留意到不少开发者对 Raw String Literals 特性情有独钟,该特性类似于 JavaScript ES6 语法中的模板字符串,使用它基本可以告别丑陋的字符串拼接。特性详见 http://openjdk.java.net/jeps/326

该特性原计划于 JDK 12 发布,可惜最后还是被取消了,详见:
http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html

可能是因为业界呼声太高,最近委员会又把这个特性拿出来重新讨论了:
https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000931.html

你最想要的 JDK 特性是什么?在留言区和大家分享吧!~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106923.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL SERVER 的压缩功能

    SQL SERVER 的压缩功能请关注个人小站:http://sqlhis.com/SQLSERVER2008及以上提供数据库表压缩功能1.压缩分类和比率压缩分为行(ROW)压缩和页(PAGE)压缩,页压缩的压缩比率更

    2022年8月1日
    6
  • R-L模型算法的优缺点_审计重要性特征

    R-L模型算法的优缺点_审计重要性特征1.特征重要性的意义LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的有点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。因为每个特征都对应一个模型参数wiw_{i}wi​,该参数越大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wiw_{i}wi​的大小。2.逻辑回归模型特征重要性及排序Ta…

    2022年10月8日
    4
  • 您的xshell评估期已过_xshell6编程语言

    您的xshell评估期已过_xshell6编程语言xshell6评估期已过,因为我下载的版本是evaluation版本,是有期限的。大家可以修改为Homeandschooluse的版本,这样就不会出现这个提示了。具体的操作步骤如下:1、前往下载地址,填写必填信息,邮箱一定要填写https://www.netsarang.com/download/down_form.html?code=6222、有限会收到一封邮件…

    2025年10月14日
    4
  • Pycharm Pro 2021.12.13激活【2021.10最新】「建议收藏」

    (Pycharm Pro 2021.12.13激活)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~00…

    2022年3月30日
    51
  • Java锁的分类_地锁怎么安装

    Java锁的分类_地锁怎么安装1.Java锁的种类在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结。介绍的内容如下:乐观锁/悲观锁独享锁/共享锁互斥锁/读写锁可重入锁公平锁/

    2022年8月3日
    7
  • 不止一个背包的背包问题_超级背包怎么使用方法

    不止一个背包的背包问题_超级背包怎么使用方法有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N

    2022年8月9日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号