Fork me on GitHub

JDK 12即将发布,你还学得动吗?

JDK 12即将在2019年3月19日发布,下面列出JDK的版本迭代时间表:

由此可知,目前JDK 12已处于Rampdown Phase One阶段,所有的新特性已经冻结,不会再针对其他JEP(JDK Enhancement Proposals简写,Java增强提案,读者可前往http://openjdk.java.net/jeps/0 查看所有的JEP)。

新特性

JDK 12新特性如下:

编号 名称 说明
189 Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 新增名为Shenandoah 的、低暂停时间的实验性垃圾收集器;
230 Microbenchmark Suite 新增微基准测试套件(Microbenchmark Suite),使开发人员可以轻松运行现有的微基准测试并创建新的基准测试;
325 Switch Expressions (Preview) 对现有Switch表达式改进,使其可以用作语句或表达式。
334 JVM Constants API 引入API来对关键类文件(key class-file)和运行时工件(run-time artifacts)的名义描述(nominal descriptions)建模,特别是可从常量池加载的常量。
340 One AArch64 Port, Not Two 在保留32位ARM端口和64位aarch64端口的同时,删除与arm64 端口相关的所有源码。
341 Default CDS Archives 在64位平台上使用默认类列表增强JDK构建过程,从而生成类数据共享(CDS)归档。
344 Abortable Mixed Collections for G1 如果G1混合回收超过暂停目标时,使其可中止。
346 Promptly Return Unused Committed Memory from G1 增强G1垃圾收集器,以便在空闲时自动将Java堆内存返回给操作系统。

示例:Switch可支持如下写法:

1
2
3
4
5
6
7
// 例如支持这么写:
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}

新特性分析

由上可知,JDK 12主要是对GC的一些改进,另外对switch提供了新的语法糖。总体改动不大。

JDK 13……

顺便看了一下JDK 13的迭代计划,2019年9月发布,这不是什么新鲜事,因为Java现在就是半年发布一次版本。有兴趣的可前往http://openjdk.java.net/projects/jdk/13/查看相关信息。

讨论

你最想要的JDK特性是啥?笔者最想要的是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 ,但愿该特性能早日发布吧……

拓展阅读

评论系统未开启,无法评论!