Java 12发布于2019年3月19日,一些重要的新特性如下。
1. 增强的switch(预览功能)
传统的switch语法存在容易漏写break的问题,而且从代码整洁性层面来看,多个break 也是一种重复。Java 12提供了增强的switch表达式,使用类似lambda表达式中条件匹配成功后的执行块,不需要多写break。作为预览特性加入,需要在javac编译和java运行时增加参数--enable-preview。例如,以下代码输出7。
String day ="Tuesday";
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);
}
2. 数字格式化工具类
Java 12引入了新的格式化数字的类CompactNumberFormat,方便我们对很长的数字进行简写。比如1000可以简写为1K。
3. 低停顿垃圾收集器Shenandoah GC
Java 12新增名为Shenandoah GC的全新并发压缩垃圾回收器,是Redhat主导开发的Pauseless GC的实现,主要目标是使99.9%的暂停小于10ms,暂停与堆大小无关等。
4. G1收集器提升
Java 12为默认的垃圾收集器G1带来了两项更新:
可中止的混合收集:JEP 344的实现。为了达到用户提供的停顿时间目标,JEP 344把要被回收的区域集(混合收集集合)拆分为强制和可选部分,使G1垃圾回收器能中止垃圾回收过程。G1可以中止可选部分的回收以达到停顿时间目标。
及时返回未使用的已分配内存:JEP 346的实现,增强G1,以便在空闲时自动将Java堆内存返回给操作系统。
资料引用:
https://www.cnblogs.com/otis/p/12846441.html
https://zhuanlan.zhihu.com/p/136841676