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

Java 12 新特性

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 特性是什么?在留言区和大家分享吧!~

来自:开源中国

Python 成功上位,为什么逐渐与 Java 拉开差距?

https://edu.csdn.net/topic/python115?utm_source=toutiao_bw

今天,Java 12 正式发布了! 你在用哪个版本?相关推荐

  1. 今天,Java 12 正式发布了!

    自 2 月 7 日开始,Java 12 / JDK 12 就进入了 RC 阶段.按照发布周期,美国当地时间 3 月 19 日,也就是今天--Java 12 正式发布了! 全面学python的时代,作为 ...

  2. Java 12正式发布,新特性解读!

    Java 12 如约而至,除了那些值得关注的特性,你也应该思考下 Java 的未来. 在 Java 9 之前,当一个版本被宣布为首选版本,存在一个"培育"(bedded-in)新 ...

  3. Java 12 / JDK 12 正式发布

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

  4. Java 12 来了,我们应该采用嘛?

    按 Java 的发布周期,于美国时间 2019 年 3 月 19 日 -- Java 12 正式发布了.这距离 Java 11 发布的 2018 年 09 月 25 日 刚半年时间. 按照现在 Jav ...

  5. java 12_Java 12在哪下载 Java 12下载地址分享

    Java 12在哪下载?Java 12于2019年3月20日正式发布,于上一个版本不同,Java 12是一个短期支持版本,但是Java 12并不是一个小版本,依然为各位带来了一些重大新功能,想要使用J ...

  6. Java 12 新特性与功能

    Java 12 新特性与功能 Java 12是Java SE的第12个版本,于2019年3月19日发布.Java 12的发布背景主要是为了帮助开发人员更加高效的进行编程工作,提高Java的性能和稳定性 ...

  7. java switch 表达式_尝鲜Java 12新特性:switch表达式

    Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言 ...

  8. 我应该采用 Java 12 还是坚持使用 Java 11?

    编译自https://blog.joda.org/2018/10/adopt-java-12-or-stick-on-11.html 原文作者 Stephen Colebourne 是一名 Java ...

  9. 3月20日, Java 10 正式发布了!

    3 月 20 日,Oracle 宣布 Java 10 正式发布.官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/inde ...

最新文章

  1. HTML中的button标签的使用,和介绍
  2. Ten Must-Have Tools Every Developer Should Download Now-----CodeSimth
  3. 【变色龙】app封装系统源码+完美版在售封装系统
  4. 右键tomcat 选择 add and remove,出现的对话框里面没有我们的项目解决方法
  5. iPhone升级iOS 15卡在请求更新上怎么办?
  6. 小马哥杂牌机高仿机刷机教程---史上最简单的卡刷方法。adb推送模式自动卡刷教程
  7. 常用来进行钢结构节点输出的软件是什么_【经验分享】钢结构深化设计BIM应用方法总结...
  8. 怎么查EI论文的检索号
  9. 依次计算一系列给定字符串的字母值,字母值为字符串中每个字母对应的编号值(A对应1,B对应2,以此类推,不区分大小写字母,非字母字符对应的值为0)的总和
  10. iOS 播放系统自带铃声
  11. syntactic sugar - 语法糖 - 糖衣语法
  12. 费雪MOGAFX方程式是什么? -
  13. Hierarchical Graph Network for Multi-hop Question Answering 论文笔记
  14. 计算机不能通讯,S7-200与电脑不能通讯问题
  15. 用latex排版LNCS模板的论文
  16. c 语言中星号什么意思,Objective-C中的星号*是什么意思?
  17. uni-app自定义组件
  18. oracle项目总结报告,“项目总结报告”如何写?5个方向16个关键要素:总结很全面...
  19. mysql++ 安装vs2008
  20. 亚马逊图书推荐--我感兴趣的

热门文章

  1. python从列表中随机抽取n个元素
  2. VUE+tinymce(富文本编辑器)
  3. 如何在数位板上练习线条跟线稿?
  4. Unity中用第三方手部模型替换Leapmotion手部模型教程
  5. Python爬虫爬取动态网页
  6. springboot项目启动问题EmbeddedWebApplicationContext
  7. tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)
  8. 教你如何用ffmpeg处理音频格式转换(标贝科技)
  9. Apple M1 上安装tensorflow开发环境
  10. 理解AdaBoost算法