JDK12:

一、Switch Expressions

旧版本switch 语句如果漏写了一个 break,那么逻辑往往就跑偏了,这种方式既繁琐,又容易出错。jdk12中switch 表达式,Pattern Matching 机制能够自然地保证只有单一路径会被执行。

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);

}

 

二、Shenandoah GC

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

 

JDK13:

一、文本块升级

jdk13之前:

String html = "<html>\n" +

" <body>\n" +

" <p>Hello, world</p>\n" +

" </body>\n" +

"</html>\n";

jdk13之后:

String html = """

<html>

<body>

<p>Hello, world</p>

</body>

</html>

""";

 

二、switch优化更新

static void howMany(int k) {

System.out.println(

switch (k) {

case 1 -> "one"

case 2 -> "two"

default -> "many"

}

);

}

 

三、重新实现旧版套接字API

四、核心库/java.util中:I18N

五、取消使用未使用的内存

 

JDK14:

1、switch优化变更为最终版

2、垃圾回收相关

1)删除cms垃圾收集器

2)弃用 ParallelScavenge + SerialOld GC 的垃圾回收算法组合

3)将 zgc 垃圾回收器移植到 macOS 和 windows 平台

3、instanceof的模式匹配(预览版)

instanceof运算符支持模式匹配来增强java语言,如下:

if (obj instanceof String s) {

// can use s here

} else {

// can't use s here

}

4、删除了安全库java.security.acl API

5、货币格式(优化)

可以通过 NumberFormat.getCurrencyInstance(Locale)使用“ u-cf-account” Unicode区域设置扩展名来获得具有记帐样式的货币格式实例,其中金额在某些区域设置中用括号表示,例如,Locale.US,它将格式化为($3.27)而不是-$3.27。

 

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐