JDK 12 又来了,我学不动了...

2019-03-20 12:37:25 +08:00
 hansonwang99


写在前面

看到 JDK 12 又发布了,萌新不知不觉感觉瑟瑟发抖,从 Java 1.8 的函数式编程思维和范式 到 Java 1.9 的模块化特性的加持 以及还没来得及深切感受一下 Java 1.11 的 ZGC 强大之后,这次 JDK 12 到底有搞了些啥事情呢?我真的学不动了,我该怎么办呢?

不管怎样,下面还是来看一下 JDK 12 的新特性解( fan )读( yi )吧!


低暂停延时的垃圾收集器 (实验版)

A Low-Pause-Time Garbage Collector (Experimental)

添加一个名为 Shenandoah 的新垃圾收集 (GC)算法,该算法通过与正在运行的 Java 线程并发执行回收工作来减少 GC 暂停时间。Shenandoah 的暂停时间与堆大小无关,这意味着无论堆大小是 200MB 还是 200GB,都将拥有相同的暂停时间。


微基准测试套件

Microbenchmark Suite

在 JDK 源代码中添加了一组基本的微基准测试套件,使得开发人员无论运行现有的微基准测试或者创建新的微基准测试都变得十分便利。


Switch 表达式 (预览版)

Switch Expressions (Preview)

这是一个预览版语言特性。通过对 switch 语法进行了扩展,使其不仅可以作为语句( statement ),还可以作为表达式( expression ),并且两种形式都可以使用“传统的”或“简化的”语法用于作用于不同的范围或者控制执行流。这些更改将会简化日常编码,并且为在 switch 中使用模式匹配 (JEP 305) 做好了准备。


JVM 常量 API

JVM Constants API

引入一个 API 来建模关键类文件( key class-file )和运行时构件( run-time artifacts )的标称描述,特别是对那些可从常量池加载的常量。


仅保留 AArch64 实现

One AArch64 Port, Not Two

删除与 arm64 实现相关的所有源代码,同时保留 32-bit ARM 和 64-bit aarch64 实现。删除这些实现是为了让所有代码贡献者集中精力于一个实现上,从而消除维护两个实现所需付出的重复工作。


默认类数据共享归档文件

Default CDS Archives

增强 JDK 构建过程,在 64 位平台上使用默认的类列表生成类数据共享(class data-sharing,CDS)存档。


可中断的 G1 Mixed GC

Abortable Mixed Collections for G1

如果 Mixed GC 的 G1 存在超出暂停目标的可能性,则使其可被中止。


G1 未使用分配内存即时返回

Promptly Return Unused Committed Memory from G1

增强 G1 垃圾收集器,以便在空闲时自动将 Java 堆内存返回给操作系统。


参考文献


后 记

啥都不说了,JDK 13 您慢点出吧,快要掉队了,我跟不上了...

8777 次点击
所在节点    程序员
50 条回复
sadhen
2019-03-20 12:47:04 +08:00
学 Scala 吧,相当于你已经学到了 JDK 20,哈哈
Cat73
2019-03-20 13:02:19 +08:00
算一算,几年后 Java 版本号能赶上你的年龄
jxf2008
2019-03-20 13:16:31 +08:00
改行 C/C++吧。十几年一个大版本,慢慢学:-)
guokeke
2019-03-20 13:22:44 +08:00
学**, 项目做完了吗?
lihongjie0209
2019-03-20 13:26:52 +08:00
说实话,这些特性不影响写代码。哪怕不知道该怎么写就怎么写, 学这些干嘛
AltairT
2019-03-20 13:38:49 +08:00
只跟 lts, 生产环境才 8 呢,换也是换 lts 的 11
saluton
2019-03-20 13:42:02 +08:00
@jxf2008 C++17 表示你说啥
allanzhuo
2019-03-20 13:42:27 +08:00
8 的写法还没适应呢==!
Kilerd
2019-03-20 14:06:19 +08:00
pattern matching 该来的还是要来。 哈哈哈
Procumbens
2019-03-20 14:09:59 +08:00
@jxf2008 C++20 表示不服
cuebyte
2019-03-20 14:14:34 +08:00
@Kilerd 和 pattern matching 不沾邊吧,只是接近 kotlin 的那種。Java 要做類型推導可不是一朝一夕的事。
DesmondLiu90
2019-03-20 14:22:26 +08:00
貌似 java 程序员不需要
boris1993
2019-03-20 14:30:33 +08:00
同样只跟 LTS

目前还在学 Java 8 的 Stream 和 Lambda

等用得上 11 了再学 11
jxf2008
2019-03-20 14:35:56 +08:00
@saluton
@Procumbens

现在很多编译器 14 都不支持。。。。

又:CSDN 的赵 4 老师前几天还在推荐 VC6.0,我真的很好奇他到底是做啥工作的
xomix
2019-03-20 14:40:36 +08:00
@jxf2008 那个赵四我也觉得很奇怪好似穿越来的人一样,可能是二十几年前高级开发人员吧
SuperMild
2019-03-20 14:53:48 +08:00
Kotlin, 真香.
neoblackcap
2019-03-20 14:53:54 +08:00
@jxf2008 11 还是可以的,很公司都开始接受 11,更高的就难说了,说起 11,那也是 8 年前的产物
zhuanggu
2019-03-20 15:02:47 +08:00
JDK 8 还没学完😢
yizmaoaa
2019-03-20 15:44:34 +08:00
JDK 12 把多行字符串给毙掉了,还是有点可惜的。
coang
2019-03-20 15:50:31 +08:00
然而基本是 jvm 的更新.. 语法没有大更新..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/546548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX