0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java 12重磅发布,新特性解读

5RJg_mcuworld 来源:YXQ 2019-03-21 17:28 次阅读

Java 9 之前,当一个版本被宣布为首选版本,存在一个“培育”(bedded-in)新 GA 版本的重叠期。在此期间,上一个版本将会继续进行免费更新。为确保新旧版本间的干净切换,即便旧版本已不再是首选版本,通常也会继续维护 12 个月以上。但是随着 Java 版本发布更改为遵循严格的时间表后,事实上宣告了传统的免费支持期将寿终正寝。

Oracle 对 Java 8 的官方支持时间持续到 2020 年 12 月,之后将不再为个人桌面用户提供 Oracle JDK 8 的修复更新;在 2019 年 1 月之后,不再提供免费的商业版本更新,届时想要继续获得 Oracle 的商业支持和维护,需付费订阅。

Java 是很多程序员的饭碗,Java 生态圈下的程序员们似乎对于 Oracle 也有诸多不满,当 Java 也像 Android 系统走上版本号的稳定道路后,新版本的发布意义还有那么大吗?Java 12 已经发布了,但使用版本最多的还是 Java 8,你会选择升级吗?

JDK12 如期而至,不知不觉 Java 半年为周期的发布模式(Half-year-cadence)已经成功运行了一年多,OpenJDK 社区和 Oracle 充分展示了其坚决的执行力。今天当然要尝鲜 JDK12 的新特性,与此同时,笔者也会从不同角度,来分析新发布模式是否达到了其初衷。

下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK 12 新特性一览:

189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

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

230:Microbenchmark Suite

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

325:Switch Expressions (Preview)

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

334:JVM Constants API

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

340:One AArch64 Port, Not Two

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

341:Default CDS Archives

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

344:Abortable Mixed Collections for G1

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

346:Promptly Return Unused Committed Memory from G1

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

首先值得关注的是 Switch Expressions,这是一个为开发者准备的特性,我们可以利用具体代码快速了解一下,下面是传统 statement 形式的 switch 语法:


switch(day) {caseMONDAY:caseFRIDAY:caseSUNDAY:System.out.println(6);break;caseTUESDAY:System.out.println(7);break;caseTHURSDAY:caseSATURDAY:System.out.println(8);break;caseWEDNESDAY:System.out.println(9);break;}

如果有编码经验,你一定知道,switch 语句如果漏写了一个 break,那么逻辑往往就跑偏了,这种方式既繁琐,又容易出错。如果换成 switch 表达式,Pattern Matching 机制能够自然地保证只有单一路径会被执行,请看下面的代码示例:


switch(day) {caseMONDAY, FRIDAY, SUNDAY -> System.out.println(6);caseTUESDAY -> System.out.println(7);caseTHURSDAY, SATURDAY -> System.out.println(8);caseWEDNESDAY -> System.out.println(9);}

更进一步,下面的表达式,为我们提供了优雅地表达特定场合计算逻辑的方式


intnumLetters =switch(day) {caseMONDAY, FRIDAY, SUNDAY ->6;caseTUESDAY ->7;caseTHURSDAY, SATURDAY ->8;caseWEDNESDAY ->9;};

Switch Expressions 或者说起相关的 Pattern Matching 特性,为我们提供了勾勒出了 Java 语法进化的一个趋势,将开发者从复杂繁琐的低层次抽象中逐渐解放出来,以更高层次更优雅的抽象,既降低代码量,又避免意外编程错误的出现,进而提高代码质量和开发效率。

第二,则是很有现实意义度 Shenandoah GC。它是 Redhat 主导开发的 Pauseless GC 实现,从大概 2013 年开始研发,终于取得了重要的阶段性成果,与其他 Pauseless GC 类似,Shenandoah GC 主要目标是 99.9% 的暂停小于 10ms,暂停与堆大小无关等。

也许了解 Shenandoah GC 的人比较少,业界声音比较响亮的是 Oracle 在 JDK11 中开源出来的 ZGC,或者商业版本的 Azul C4(Continuously Concurrent Compacting Collector)。但是,笔者认为,至少目前,其实际意义大于后两者,因为:

使用 ZGC 的最低门槛是升级到 JDK11,对很多团队来说,这种版本的跳跃并不是非常低成本的事情,更何况是尚不清楚 ZGC 在自身业务场景中的实际表现如何。

而 C4,毕竟是土豪们的选择,现实情况是,有多少公司连个几十块钱的 License 都不舍得…

而 Shenandoah GC 可是有稳定的 JDK8u 版本发布的哦,据我所知已经有个别公司在 HBase 等高实时性产品中实践许久。

从原理的角度,我们可以参考该项目官方的示意图,其内存结构与 G1 非常相似,都是将内存划分为类似棋盘的 region。整体流程与 G1 也是比较相似的,最大的区别在于实现了并发的 Evacuation 环节,引入的 Brooks Forwarding Pointer 技术使得 GC 在移动对象时,对象引用仍然可以访问。

下面是 jbb15 benchmark 中,Shenandoah GC 相对于其他主流 GC 的表现,GC 暂停相比于 CMS 等选择有数量级程度的提高,对于 GC 暂停非常敏感的场景,价值还是很明显的,能够在 SLA 层面有显著提高。当然,这种对于低延迟的保证,也是以消耗 CPU 等计算资源为代价的,实际吞吐量表现也不是非常明朗,需要看企业的实际场景需求,并不是一个一劳永逸的解决方案。

其他的一些特性,例如,G1 相关的两个特性是对 G1 在特定场景不足的有效改进,但谈不上是突破性的提高,不再一一列举。

与 JDK11 这种长期支持版本(Long-Term-Support,LTS)相比,JDK12 似乎关注度有限,大家对于 JDK 这种频繁的节奏也有点麻木了,那么

JDK12 这种非 LTS 版本,是否有什么生产环境价值?

Java 新的发布模式是否达到了其快速落地和迭代新特性的目的?

也许不会有太多公司直接选择 JDK12,但个别的生产实践并不遥远。比如,我所在部门在实践场景中发现,利用 JDK 12 的 Abortable Mixed Collections for G1,解决了 HDFS 在特定场景中 G1 Evacuation 时间过长的困扰,虽然最后团队选择将其 backport 到了自己的 JDK11 版本中,但如果没有快速交付的预览版 JDK12,也不会如此快速的得到结论。

而对另一个问题,笔者认为目前看是非常成功的,解开了 Java/JVM 演进的许多枷锁,至关重要的是,OpenJDK 的权力中心,正在转移到开发社区和开发者手中。在新的模式中,既可以利用 LTS 满足企业长期可靠支持的需求,也可以满足各种开发者对于新特性迭代的诉求。你可能注意到了 Switch Expressions 被打上了预览(Preview)的标签,Shenandoah GC 则是实验(Experimental)特性,这些都是以往的发布周期下不大现实的,因为用 2-3 年的最小间隔粒度来实验一个特性,基本是不现实的。

可以预计,JDK8 在未来的一段时间仍将是主流,我们已经注意到 Amazon、Alibaba、Redhat、AdoptOpenJDK 等等厂商或社区,纷纷发布了自己的 JDK8 等产品,开始竞赛长期支持版本 JDK 的主导权,笔者认为这是非常好的迹象,反映了主流厂商对于 Java 的投资力度增大。

是否会带来 Java/JVM 的碎片化呢?多少会发生一些,但从目前的合作模式来看,OpenJDK 仍然是合作的中心,主导这 Java 历史版本维护和未来的演进路线。

一些小鲜肉语言嘲笑 Java,实现类似功能,Java 代码要多写近一倍,程序要笨重一个数量级,有些也许是言过其实,但语法的表达能力和 JVM 的庞大,确实逐渐成为 Java 发展的短板,JDK10~12 发布的不间断成功,让我们看到了 Java/JVM 大踏步前进的曙光!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104510
  • 代码
    +关注

    关注

    30

    文章

    4733

    浏览量

    68294

原文标题:Java 12正式发布,新特性解读!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    UQI优奇重磅发布全栈式无人物流解决方案

    近日,“无人物流主义者”UQI优奇以“新物种、新范式、新纪元”为主题,在CeMAT 2024重磅发布全栈式无人物流解决方案,并推出全新产品“全天候”“双驱”重载无人叉车F3000,为物流行业树立创新应用标杆,加速无人物流的变革。
    的头像 发表于 11-06 14:17 187次阅读

    使用PyTorch在英特尔独立显卡上训练模型

    《PyTorch 2.5重磅更新:性能优化+新特性》中的一个新特性就是:正式支持在英特尔独立显卡上训练模型!
    的头像 发表于 11-01 14:21 188次阅读
    使用PyTorch在英特尔独立显卡上训练模型

    依图天问大模型4.0重磅发布

    2023年7月,依图发布了智能安防领域首个可实战可商用的多模态大模型—依图天问1.0。发布至今,依图天问大模型基座已完成了两次迭代升级,并率先在全国50多个项目中部署应用。 近日,在第十届中国(上海
    的头像 发表于 06-18 09:25 659次阅读

    天合光能发布行业首款AI仿生液冷工商业储能系统Potentia蓝海2

    重塑光储设计,颠覆智造想象,2024年6月12日,天合光能“工商储进化论”新品发布会于上海浦东隆重召开,行业首款AI仿生液冷工商业储能系统Potentia蓝海2重磅登场。秉持产品优化、技术创新、服务精进、场景拓展的四维升级理念,
    的头像 发表于 06-14 11:17 598次阅读

    2024 TUYA全球开发者大会盛大启幕,Cube AI大模型重磅首发!

    2024TUYA全球开发者大会上,重磅推出AI大模型、AI开发工具、AI小程序开发基座等重量级产品,让AI价值真正落地。01重磅发布涂鸦的首个AI大模型——CubeA
    的头像 发表于 05-31 08:15 318次阅读
    2024 TUYA全球开发者大会盛大启幕,Cube AI大模型<b class='flag-5'>重磅</b>首发!

    全球首款基于文心大模型的学习机—小度学习机Z30重磅发布

    AI时代,大模型成为推动智能教育升维发展的新质生产力。5月27日小度科技召开新品发布会,全球首款基于文心大模型的学习机——小度学习机Z30重磅发布
    的头像 发表于 05-28 09:30 614次阅读

    小米SU7重磅发布,NGI为梦想之车保驾护航

    小米SU7重磅发布,NGI为梦想之车保驾护航   3月28日晚,备受瞩目的小米SU7正式发布,作为小米旗下首款C级高性能生态科技智能轿车,SU7搭载了小米五大核心黑科技,包括800V碳化硅高压
    发表于 05-20 11:58 3405次阅读
    小米SU7<b class='flag-5'>重磅</b><b class='flag-5'>发布</b>,NGI为梦想之车保驾护航

    报名开启!第二届OpenHarmony开发者大会2024重磅来袭!

    OpenHarmony 开发者大会2024,为开发者、产业组织、生态伙伴和行业用户搭建一个交流、分享和学习的平台。大会以 OpenHarmony 4.1 Release版本根技术特性解读为契机,以“1场主论坛+6场技术
    发表于 05-14 15:23

    超充再次取得重大突破!欣旺达动力闪充电池3.0重磅发布

    、长寿命动力电池产品惊艳亮相,更有钠电、大圆柱、固态电池等前沿技术产品重磅展示,为汽车行业带来全场景的动力电池解决方案。 值得瞩目的是,4月25日,欣旺达动力电芯产品总经理何轩博士在北京车展展台现场隆重发布全新闪充电池3.
    的头像 发表于 04-29 13:53 1323次阅读

    奥拓电子携多款AI+视讯产品亮相北京InfoComm

    4月17日,奥拓电子与多位全球AI巨头携手亮相的美国NAB展还未落下帷幕,另一重磅展会北京InfoComm便盛大开幕。
    的头像 发表于 04-19 14:18 406次阅读

    小米SU7发布在即,全系标配智能辅助驾驶功能

    近日,小米创始人雷军通过其个人社交平台宣布,备受期待的小米SU7将于3月28日正式发布。这一重磅消息迅速在汽车界引起广泛关注。小米汽车官方微博同步宣布,新车上市即交付,交付即上量,展现出强大的市场信心。
    的头像 发表于 03-27 11:41 817次阅读

    宋仕强论道”系列讲座的文章暨宋仕强先生研究华强北模式和华强北文化的系列文章,再次迎来更新!

    》由新华社新华瞭望网在主页首发,当日点击量就突破10万次!之后,金航标和萨科微宋仕强先生的这一重磅力作又引发一波波热议狂潮,不仅被国内外的多家知名权威媒体纷纷竞相转载,还在阿拉伯世界迅猛传播!宋仕强先生
    发表于 03-26 10:36

    软通动力&quot;梧桐•招聘&quot;入选中国首部大模型应用权威案例集

    《2023大模型落地应用案例集》(以下简称"《案例集》")重磅发布。软通动力智能招聘系统"梧桐•招聘"作为垂类大模型代表,成功入选《案例集》并被授予"优秀实践案例"。这是软通动力致力于促进大模型创新发展、加速通用人工智能创新生态所获得的又一
    的头像 发表于 12-29 17:58 930次阅读
    软通动力&quot;梧桐•招聘&quot;入选中国首部大模型应用权威案例集

    龙芯重磅发布新一代处理器,全力打造IT产业新生态

    11月28日,2023龙芯产品发布暨用户大会在国家会议中心如约启幕。大会以“到中流击水”为主题,现场发布新一代通用处理器龙芯3A6000、打印机主控芯片龙芯2P0500重磅成果,并对外公布龙芯处理器
    的头像 发表于 11-28 16:45 1664次阅读
    龙芯<b class='flag-5'>重磅</b><b class='flag-5'>发布</b>新一代处理器,全力打造IT产业新生态

    简单了解Java的新特性

    Java 8 到 Java 20,Java 已经走过了漫长的道路,自 Java 8 以来,Java 生态系统发生了很多变化。最显着的变化是
    的头像 发表于 11-23 16:38 1067次阅读
    简单了解<b class='flag-5'>Java</b>的新<b class='flag-5'>特性</b>