黑马程序员技术交流社区

标题: Java12正式发布 [打印本页]

作者: 逆风TO    时间: 2019-3-29 10:06
标题: Java12正式发布
本帖最后由 逆风TO 于 2019-3-29 10:10 编辑

美国当地时间3月19日,正式发布了Java12!

发布公告
掐指一算,距离刚刚发布的Java11貌似也没多久,12时代就来了,这是又代表着广大程序员们继续要学习了吗?

是的。首先我们看一下Java12的新特性有哪些。

· JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
| Shenandoah:低暂停时间的 GC(实验性功能)

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

·  JEP 230: Microbenchmark Suite
| 微基准测试套件

JDK 源码中新增了一套微基准测试套件,开发人员可通过它轻松运行已有的微基准测试并创建新的基准测试。

·  JEP 325: Switch Expressions (Preview)
| Switch 表达式(预览功能)

对 switch 语句进行了扩展,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的 "case L ->" 模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

·  JEP 334: JVM Constants API
| JVM 常量 API

引入 API 来对关键类文件(key class-file)和运行时工件(run-time artifacts)的名义描述(nominal descriptions)进行建模,特别是可从常量池加载的常量。

在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。

符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。

·  JEP 340: One AArch64 Port, Not Two
| 只保留一个 AArch64 实现

在保留 32 位 ARM 实现和 64 位 aarch64 实现的同时,删除与 arm64 实现相关的所有源码。

JDK 中存在两套 64 位 ARM 实现,主要存在于 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录。两者都实现了 aarch64,现在将只保留后者,删除由 Oracle 提供的 arm64。这将使贡献者将他们的精力集中在单个 64 位 ARM 实现上,并消除维护两套实现所需的重复工作。

·  JEP 341: Default CDS Archives
| 默认类数据共享归档文件

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

· JEP 344: Abortable Mixed Collections for G1
| 可中止的 G1 混合 GC

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

·  JEP 346: Promptly Return Unused Committed Memory from G1
|G1 及时返回未使用的已分配内存
增强 G1 GC,以便在空闲时自动将 Java 堆内存返回给操作系统。

为了实现向操作系统返回最大内存量的目标,G1 将在应用程序不活动期间定期执行或触发并发周期以确定整体 Java 堆使用情况。这将导致它自动将 Java 堆的未使用部分返回给操作系统。而在用户控制下,可以可选地执行完整的 GC,以使返回的内存量最大化。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2