飞行记录器:飞行记录器之前是商业版 JDK 的一项分析工具 , 但在 Java 11 中 , 其代码被包含到公开代码库中 , 这样所有人都能使用该功能了Java12增强 Switch
- 传统的 switch 语法存在容易漏写 break 的问题 , 而且从代码整洁性层面来看 , 多个 break 本质也是一种重复
- Java12 提供了 swtich 表达式 , 使用类似 lambda 语法条件匹配成功后的执行块 , 不需要多写 break
- 作为预览特性加入 , 需要在javac编译和java运行时增加参数--enable-preview 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); }
数字格式化工具类
- NumberFormat 新增了对复杂的数字进行格式化的支持 NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT); String result = fmt.format(1000); System.out.println(result); // 输出为 1K , 计算工资是多少K更方便了 。。。
Shenandoah GC
- Redhat 主导开发的 Pauseless GC 实现 , 主要目标是 99.9% 的暂停小于 10ms , 暂停与堆大小无关等
- 和 Java11 开源的 ZGC 相比(需要升级到 JDK11 才能使用) , Shenandoah GC 有稳定的 JDK8u 版本 , 在 Java8 占据主要市场份额的今天有更大的可落地性
G1 收集器提升
- Java12 为默认的垃圾收集器 G1 带来了两项更新: 可中止的混合收集集合:JEP344 的实现 , 为了达到用户提供的停顿时间目标 , JEP 344 通过把要被回收的区域集(混合收集集合)拆分为强制和可选部分 , 使 G1 垃圾回收器能中止垃圾回收过程 。G1 可以中止可选部分的回收以达到停顿时间目标 及时返回未使用的已分配内存:JEP346 的实现 , 增强 G1 GC , 以便在空闲时自动将 Java 堆内存返回给操作系统
Java13引入 yield 关键字到 Switch 中
- Switch 表达式中就多了一个关键字用于跳出 Switch 块的关键字 yield , 主要用于返回一个值
- yield和 return 的区别在于:return 会直接跳出当前循环或者方法 , 而 yield 只会跳出当前 Switch 块 , 同时在使用 yield 时 , 需要有 default 条件 private static String descLanguage(String name) { return switch (name) { case "Java": yield "object-oriented, platform independent and secured"; case "Ruby": yield "a programmer's best friend"; default: yield name +" is a good language"; }; }
文本块
- 解决 Java 定义多行字符串时只能通过换行转义或者换行连接符来变通支持的问题 , 引入三重双引号来定义多行文本
- 两个"""中间的任何内容都会被解释为字符串的一部分 , 包括换行符 String json ="{\n" + " \"name\":\"mkyong\",\n" + " \"age\":38\n" + "}\n"; // 未支持文本块之前 String json = """ { "name":"mkyong", "age":38 } """;
增强 ZGC 释放未使用内存
- 在 Java 11 中是实验性的引入的 ZGC 在实际的使用中存在未能主动将未使用的内存释放给操作系统的问题
- ZGC 堆由一组称为 ZPages 的堆区域组成 。 在 GC 周期中清空 ZPages 区域时 , 它们将被释放并返回到页面缓存 ZPageCache 中 , 此缓存中的 ZPages 按最近最少使用(LRU)的顺序 , 并按照大小进行组织
- 在 Java 13 中 , ZGC 将向操作系统返回被标识为长时间未使用的页面 , 这样它们将可以被其他进程重用
SocketAPI 重构
- Java 13 为 Socket API 带来了新的底层实现方法 , 并且在 Java 13 中是默认使用新的 Socket 实现 , 使其易于发现并在排除问题同时增加可维护性
推荐阅读
-
花卉:养花经常掉叶子?可能是浇水出问题,赶紧改了,别忽视!
-
-
-
爱豆App|真-电竞小说男主伯贤:“我终于可以吃鸡了!”
-
-
上海市知识产权局网站|黄浦区多措并举积极推进知识产权领域双随机抽查工作
-
新作|苍天白鹤携新作强势来袭,将《星峰传说》挤至榜二,9.9分夺榜一
-
-
-
王者荣耀|S20赛季即将结束,夏洛特似女装亚瑟,钟馗也要出恐吓流玩法!
-
#第一篮球视角#书豪隔空送祝福:纽约,我从心底里爱着你,尼克斯重播林疯狂时刻
-
青年|天龙老玩家为了奔现有多拼因一件棉衣造成的误会,结局皆大欢喜
-
央视累计71157例,加拿大新增新冠肺炎确诊病例1176例
-
『TOPWOMEN时髦笔记』次次出手都精彩绝伦,纪梵希“女魔头”正式卸任!三年高定系列
-
江西都市现场|妻子抱怨丈夫总在晚上出去,民警一查,发现事情不简单
-
澎湃新闻|安倍晋三连续执政时间刷新纪录,政治遗产依然模糊?
-
-
《庆余年2》播出有消息:郭麒麟壮到不敢认,叶灵儿换人成唯一败笔
-
电池|三星Galaxy F41发布,6400万三摄+6000MAh,起售价1575元
-
直播吧|内维尔:蒂亚戈英语好在那里没用,利物浦当地口音太重