zoukankan      html  css  js  c++  java
  • Java 12 正式发布,8大新特性!

    640?wx_fmt=jpeg

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

    640?wx_fmt=png

    △ JDK 12 GA 发布

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

    640?wx_fmt=png

    下边分别来看看:

    1、Shenandoah:低暂停时间的 GC(实验性功能)

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

    2、微基准测试套件

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

    3、Switch 表达式(预览功能)

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

    4、JVM 常量 API

    引入 API 对关键类文件和运行时工件建模,特别是可从常量池加载的常量。在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。


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

    5、只保留一个 AArch64 实现

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

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

    6、默认类数据共享归档文件

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

    7、可中止的 G1 Mixed GC

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

    8、G1 及时返回未使用的已分配内存

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


    观望 JDK 13

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

    可访问 http://openjdk.java.net/projects/jdk/13/ 查看 JDK 13 的相关信息。


    讨论

    留意到不少开发者对 Raw String Literals 特性情有独钟,该特性类似于 JavaScript ES6 语法中的模板字符串,使用它基本可以告别丑陋的字符串拼接。特性详见:

    http://openjdk.java.net/jeps/326

    该特性原计划于 JDK 12 发布,可惜最后还是被取消了,详见:

    http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html

    可能是因为业界呼声太高,最近委员会又把这个特性拿出来重新讨论了:

    https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000931.html


    来源开源中国社区:

    https://www.oschina.net/news/105278/java-12-released-mar-19


    你最想要的 JDK 特性是什么?在留言区和大家分享吧!~


    关注Java技术栈微信公众号,在后台回复关键字:Java,可以获取更多栈长整理的 Java 系列技术干货。


    最近干货分享

    为什么面试你要25K,HR只给你20K?

    Spring 系列干货,2019最新整理版!

    你真的搞懂 transient  关键字了吗?

    推荐一个技术圈子,30k的offer靠它了!

    分享一份Java架构师学习资料!

    640


    640点击「阅读原文和栈长学更多…
  • 相关阅读:
    新经资讯项目业务逻辑梳理
    HTTP状态保持的原理
    CSRF的原理和防范措施
    装饰器路由具体实现梳理
    Flask中异常捕获
    正则匹配路由
    (搬运以学习)flask 上下文的实现
    flask之请求钩子
    如何在linux中创建虚拟环境
    面包屑导航
  • 原文地址:https://www.cnblogs.com/java-stack/p/11952347.html
Copyright © 2011-2022 走看看