9 月 17 日,JDK/Java 13 正式 GA。

澳门新葡萄京所有网站 1

澳门新葡萄京所有网站 2

△ Java 12/JDK 12 GA 发布公告

此版本带来了以下几大新特性:

自 2 月 7 日开始,Java 12 / JDK 12 就进入了 RC
阶段。按照发布周期,美国当地时间 3 月 19 日,也就是今天 Java 12
正式发布了!

  • JEP 350,Dynamic CDS
    Archives
    :扩展应用程序类-数据共享,以允许在
    Java 应用程序执行结束时动态归档类。归档类将包括默认的基础层
    CDS(class
    data-sharing)存档中不存在的所有已加载的应用程序类和库类。
  • JEP 351,澳门新葡萄京所有网站,ZGC: Uncommit Unused
    Memory
    :增强 ZGC
    以将未使用的堆内存返回给操作系统。
  • JEP 353,Reimplement the Legacy Socket
    API
    :使用易于维护和调试的更简单、更现代的实现替换
    java.net.Socket 和 java.net.ServerSocket API 使用的底层实现。

  • JEP 354: Switch Expressions
    (Preview)
    :可在生产环境中使用的 switch
    表达式,JDK 13 中将带来一个 beta 版本实现。switch 表达式扩展了
    switch
    语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的
    switch 语法,或者使用简化的“case L
    ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为
    switch 中的模式匹配(JEP
    305)做好准备。

  • JEP 355,Text Blocks
    (Preview)
    :将文本块添加到 Java
    语言。文本块是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

澳门新葡萄京所有网站 3

详情查看:http://openjdk.java.net/projects/jdk/13

▍新特性

Java 12 带来了一系列新特性:

澳门新葡萄京所有网站 4

下边分别来看看:

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

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

JEP 334: JVM Constants API

JVM 常量 API引入 API 来对关键类文件(key
class-file)和运行时工件(run-time artifacts)的名义描述(nominal
descriptions)进行建模,特别是可从常量池加载的常量。在新的
java.lang.invoke.constant
包中定义了一系列基于值的符号引用类型,它们能够描述每种可加载常量。符号引用以纯
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,以使返回的内存量最大化。

上述每一个新特性都有详细的说明文档,点击「阅读原文」可以跳转查看。

▍观望 JDK 13

根据 JDK 13 的迭代计划,预计其将于 2019 年 9 月发布 —— Java
现在采取“半年发布一次版本”的模式。

对于 JDK 13 的新特性,Oracle Java 平台组首席架构师 Mark Reinhold
做出了两个预测:

原生字符串文字(Raw String
Literals),它可以跨多行源码而不对转义字符进行转义。目标是简化 Java
的开发,比如开发者可以可读形式表示字符序列,而不会掺杂一些 Java
指示符,或者提供针对 Java 以外的语法的字符串。在 JDK 13
中进行预期的测试运行后,该功能可以在随后的 JDK 14 版本中跟进。

可用于生产环境的 switch 表达式,JDK 13 中将带来一个 beta
版本实现。switch 表达式扩展了 switch
语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的
switch 语法,或者使用简化的“case L
->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为
switch 中的模式匹配做好准备。