0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java 12重磅發(fā)布,新特性解讀

5RJg_mcuworld ? 來源:YXQ ? 2019-03-21 17:28 ? 次閱讀

Java 9 之前,當(dāng)一個版本被宣布為首選版本,存在一個“培育”(bedded-in)新 GA 版本的重疊期。在此期間,上一個版本將會繼續(xù)進(jìn)行免費更新。為確保新舊版本間的干凈切換,即便舊版本已不再是首選版本,通常也會繼續(xù)維護(hù) 12 個月以上。但是隨著 Java 版本發(fā)布更改為遵循嚴(yán)格的時間表后,事實上宣告了傳統(tǒng)的免費支持期將壽終正寢。

Oracle 對 Java 8 的官方支持時間持續(xù)到 2020 年 12 月,之后將不再為個人桌面用戶提供 Oracle JDK 8 的修復(fù)更新;在 2019 年 1 月之后,不再提供免費的商業(yè)版本更新,屆時想要繼續(xù)獲得 Oracle 的商業(yè)支持和維護(hù),需付費訂閱。

Java 是很多程序員的飯碗,Java 生態(tài)圈下的程序員們似乎對于 Oracle 也有諸多不滿,當(dāng) Java 也像 Android 系統(tǒng)走上版本號的穩(wěn)定道路后,新版本的發(fā)布意義還有那么大嗎?Java 12 已經(jīng)發(fā)布了,但使用版本最多的還是 Java 8,你會選擇升級嗎?

JDK12 如期而至,不知不覺 Java 半年為周期的發(fā)布模式(Half-year-cadence)已經(jīng)成功運(yùn)行了一年多,OpenJDK 社區(qū)和 Oracle 充分展示了其堅決的執(zhí)行力。今天當(dāng)然要嘗鮮 JDK12 的新特性,與此同時,筆者也會從不同角度,來分析新發(fā)布模式是否達(dá)到了其初衷。

下載地址:

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

首先值得關(guān)注的是 Switch Expressions,這是一個為開發(fā)者準(zhǔn)備的特性,我們可以利用具體代碼快速了解一下,下面是傳統(tǒng) 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;}

如果有編碼經(jīng)驗,你一定知道,switch 語句如果漏寫了一個 break,那么邏輯往往就跑偏了,這種方式既繁瑣,又容易出錯。如果換成 switch 表達(dá)式,Pattern Matching 機(jī)制能夠自然地保證只有單一路徑會被執(zhí)行,請看下面的代碼示例:


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);}

更進(jìn)一步,下面的表達(dá)式,為我們提供了優(yōu)雅地表達(dá)特定場合計算邏輯的方式


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

Switch Expressions 或者說起相關(guān)的 Pattern Matching 特性,為我們提供了勾勒出了 Java 語法進(jìn)化的一個趨勢,將開發(fā)者從復(fù)雜繁瑣的低層次抽象中逐漸解放出來,以更高層次更優(yōu)雅的抽象,既降低代碼量,又避免意外編程錯誤的出現(xiàn),進(jìn)而提高代碼質(zhì)量和開發(fā)效率。

第二,則是很有現(xiàn)實意義度 Shenandoah GC。它是 Redhat 主導(dǎo)開發(fā)的 Pauseless GC 實現(xiàn),從大概 2013 年開始研發(fā),終于取得了重要的階段性成果,與其他 Pauseless GC 類似,Shenandoah GC 主要目標(biāo)是 99.9% 的暫停小于 10ms,暫停與堆大小無關(guān)等。

也許了解 Shenandoah GC 的人比較少,業(yè)界聲音比較響亮的是 Oracle 在 JDK11 中開源出來的 ZGC,或者商業(yè)版本的 Azul C4(Continuously Concurrent Compacting Collector)。但是,筆者認(rèn)為,至少目前,其實際意義大于后兩者,因為:

使用 ZGC 的最低門檻是升級到 JDK11,對很多團(tuán)隊來說,這種版本的跳躍并不是非常低成本的事情,更何況是尚不清楚 ZGC 在自身業(yè)務(wù)場景中的實際表現(xiàn)如何。

而 C4,畢竟是土豪們的選擇,現(xiàn)實情況是,有多少公司連個幾十塊錢的 License 都不舍得…

而 Shenandoah GC 可是有穩(wěn)定的 JDK8u 版本發(fā)布的哦,據(jù)我所知已經(jīng)有個別公司在 HBase 等高實時性產(chǎn)品中實踐許久。

從原理的角度,我們可以參考該項目官方的示意圖,其內(nèi)存結(jié)構(gòu)與 G1 非常相似,都是將內(nèi)存劃分為類似棋盤的 region。整體流程與 G1 也是比較相似的,最大的區(qū)別在于實現(xiàn)了并發(fā)的 Evacuation 環(huán)節(jié),引入的 Brooks Forwarding Pointer 技術(shù)使得 GC 在移動對象時,對象引用仍然可以訪問。

下面是 jbb15 benchmark 中,Shenandoah GC 相對于其他主流 GC 的表現(xiàn),GC 暫停相比于 CMS 等選擇有數(shù)量級程度的提高,對于 GC 暫停非常敏感的場景,價值還是很明顯的,能夠在 SLA 層面有顯著提高。當(dāng)然,這種對于低延遲的保證,也是以消耗 CPU 等計算資源為代價的,實際吞吐量表現(xiàn)也不是非常明朗,需要看企業(yè)的實際場景需求,并不是一個一勞永逸的解決方案。

其他的一些特性,例如,G1 相關(guān)的兩個特性是對 G1 在特定場景不足的有效改進(jìn),但談不上是突破性的提高,不再一一列舉。

與 JDK11 這種長期支持版本(Long-Term-Support,LTS)相比,JDK12 似乎關(guān)注度有限,大家對于 JDK 這種頻繁的節(jié)奏也有點麻木了,那么

JDK12 這種非 LTS 版本,是否有什么生產(chǎn)環(huán)境價值?

Java 新的發(fā)布模式是否達(dá)到了其快速落地和迭代新特性的目的?

也許不會有太多公司直接選擇 JDK12,但個別的生產(chǎn)實踐并不遙遠(yuǎn)。比如,我所在部門在實踐場景中發(fā)現(xiàn),利用 JDK 12 的 Abortable Mixed Collections for G1,解決了 HDFS 在特定場景中 G1 Evacuation 時間過長的困擾,雖然最后團(tuán)隊選擇將其 backport 到了自己的 JDK11 版本中,但如果沒有快速交付的預(yù)覽版 JDK12,也不會如此快速的得到結(jié)論。

而對另一個問題,筆者認(rèn)為目前看是非常成功的,解開了 Java/JVM 演進(jìn)的許多枷鎖,至關(guān)重要的是,OpenJDK 的權(quán)力中心,正在轉(zhuǎn)移到開發(fā)社區(qū)和開發(fā)者手中。在新的模式中,既可以利用 LTS 滿足企業(yè)長期可靠支持的需求,也可以滿足各種開發(fā)者對于新特性迭代的訴求。你可能注意到了 Switch Expressions 被打上了預(yù)覽(Preview)的標(biāo)簽,Shenandoah GC 則是實驗(Experimental)特性,這些都是以往的發(fā)布周期下不大現(xiàn)實的,因為用 2-3 年的最小間隔粒度來實驗一個特性,基本是不現(xiàn)實的。

可以預(yù)計,JDK8 在未來的一段時間仍將是主流,我們已經(jīng)注意到 Amazon、Alibaba、Redhat、AdoptOpenJDK 等等廠商或社區(qū),紛紛發(fā)布了自己的 JDK8 等產(chǎn)品,開始競賽長期支持版本 JDK 的主導(dǎo)權(quán),筆者認(rèn)為這是非常好的跡象,反映了主流廠商對于 Java 的投資力度增大。

是否會帶來 Java/JVM 的碎片化呢?多少會發(fā)生一些,但從目前的合作模式來看,OpenJDK 仍然是合作的中心,主導(dǎo)這 Java 歷史版本維護(hù)和未來的演進(jìn)路線。

一些小鮮肉語言嘲笑 Java,實現(xiàn)類似功能,Java 代碼要多寫近一倍,程序要笨重一個數(shù)量級,有些也許是言過其實,但語法的表達(dá)能力和 JVM 的龐大,確實逐漸成為 Java 發(fā)展的短板,JDK10~12 發(fā)布的不間斷成功,讓我們看到了 Java/JVM 大踏步前進(jìn)的曙光!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2946

    瀏覽量

    104370
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68085

原文標(biāo)題:Java 12正式發(fā)布,新特性解讀!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    依圖天問大模型4.0重磅發(fā)布

    2023年7月,依圖發(fā)布了智能安防領(lǐng)域首個可實戰(zhàn)可商用的多模態(tài)大模型—依圖天問1.0。發(fā)布至今,依圖天問大模型基座已完成了兩次迭代升級,并率先在全國50多個項目中部署應(yīng)用。 近日,在第十屆中國(上海
    的頭像 發(fā)表于 06-18 09:25 ?597次閱讀

    天合光能發(fā)布行業(yè)首款A(yù)I仿生液冷工商業(yè)儲能系統(tǒng)Potentia藍(lán)海2

    重塑光儲設(shè)計,顛覆智造想象,2024年6月12日,天合光能“工商儲進(jìn)化論”新品發(fā)布會于上海浦東隆重召開,行業(yè)首款A(yù)I仿生液冷工商業(yè)儲能系統(tǒng)Potentia藍(lán)海2重磅登場。秉持產(chǎn)品優(yōu)化、技術(shù)創(chuàng)新、服務(wù)精進(jìn)、場景拓展的四維升級理念,
    的頭像 發(fā)表于 06-14 11:17 ?540次閱讀

    2024 TUYA全球開發(fā)者大會盛大啟幕,Cube AI大模型重磅首發(fā)!

    2024TUYA全球開發(fā)者大會上,重磅推出AI大模型、AI開發(fā)工具、AI小程序開發(fā)基座等重量級產(chǎn)品,讓AI價值真正落地。01重磅發(fā)布涂鴉的首個AI大模型——CubeA
    的頭像 發(fā)表于 05-31 08:15 ?291次閱讀
    2024 TUYA全球開發(fā)者大會盛大啟幕,Cube AI大模型<b class='flag-5'>重磅</b>首發(fā)!

    全球首款基于文心大模型的學(xué)習(xí)機(jī)—小度學(xué)習(xí)機(jī)Z30重磅發(fā)布

    AI時代,大模型成為推動智能教育升維發(fā)展的新質(zhì)生產(chǎn)力。5月27日小度科技召開新品發(fā)布會,全球首款基于文心大模型的學(xué)習(xí)機(jī)——小度學(xué)習(xí)機(jī)Z30重磅發(fā)布,
    的頭像 發(fā)表于 05-28 09:30 ?575次閱讀

    小米SU7重磅發(fā)布,NGI為夢想之車保駕護(hù)航

    小米SU7重磅發(fā)布,NGI為夢想之車保駕護(hù)航 ? 3月28日晚,備受矚目的小米SU7正式發(fā)布,作為小米旗下首款C級高性能生態(tài)科技智能轎車,SU7搭載了小米五大核心黑科技,包括800V碳化硅高壓
    發(fā)表于 05-20 11:58 ?3104次閱讀
    小米SU7<b class='flag-5'>重磅</b><b class='flag-5'>發(fā)布</b>,NGI為夢想之車保駕護(hù)航

    報名開啟!第二屆OpenHarmony開發(fā)者大會2024重磅來襲!

    OpenHarmony 開發(fā)者大會2024,為開發(fā)者、產(chǎn)業(yè)組織、生態(tài)伙伴和行業(yè)用戶搭建一個交流、分享和學(xué)習(xí)的平臺。大會以 OpenHarmony 4.1 Release版本根技術(shù)特性解讀為契機(jī),以“1場主論壇+6場技術(shù)
    發(fā)表于 05-14 15:23

    超充再次取得重大突破!欣旺達(dá)動力閃充電池3.0重磅發(fā)布!

    、長壽命動力電池產(chǎn)品驚艷亮相,更有鈉電、大圓柱、固態(tài)電池等前沿技術(shù)產(chǎn)品重磅展示,為汽車行業(yè)帶來全場景的動力電池解決方案。 值得矚目的是,4月25日,欣旺達(dá)動力電芯產(chǎn)品總經(jīng)理何軒博士在北京車展展臺現(xiàn)場隆重發(fā)布全新閃充電池3.
    的頭像 發(fā)表于 04-29 13:53 ?1115次閱讀

    小米SU7發(fā)布在即,全系標(biāo)配智能輔助駕駛功能

    近日,小米創(chuàng)始人雷軍通過其個人社交平臺宣布,備受期待的小米SU7將于3月28日正式發(fā)布。這一重磅消息迅速在汽車界引起廣泛關(guān)注。小米汽車官方微博同步宣布,新車上市即交付,交付即上量,展現(xiàn)出強(qiáng)大的市場信心。
    的頭像 發(fā)表于 03-27 11:41 ?772次閱讀

    宋仕強(qiáng)論道”系列講座的文章暨宋仕強(qiáng)先生研究華強(qiáng)北模式和華強(qiáng)北文化的系列文章,再次迎來更新!

    》由新華社新華瞭望網(wǎng)在主頁首發(fā),當(dāng)日點擊量就突破10萬次!之后,金航標(biāo)和薩科微宋仕強(qiáng)先生的這一重磅力作又引發(fā)一波波熱議狂潮,不僅被國內(nèi)外的多家知名權(quán)威媒體紛紛競相轉(zhuǎn)載,還在阿拉伯世界迅猛傳播!宋仕強(qiáng)先生
    發(fā)表于 03-26 10:36

    龍芯重磅發(fā)布新一代處理器,全力打造IT產(chǎn)業(yè)新生態(tài)

    11月28日,2023龍芯產(chǎn)品發(fā)布暨用戶大會在國家會議中心如約啟幕。大會以“到中流擊水”為主題,現(xiàn)場發(fā)布新一代通用處理器龍芯3A6000、打印機(jī)主控芯片龍芯2P0500重磅成果,并對外公布龍芯處理器
    的頭像 發(fā)表于 11-28 16:45 ?1632次閱讀
    龍芯<b class='flag-5'>重磅</b><b class='flag-5'>發(fā)布</b>新一代處理器,全力打造IT產(chǎn)業(yè)新生態(tài)

    簡單了解Java的新特性

    Java 8 到 Java 20,Java 已經(jīng)走過了漫長的道路,自 Java 8 以來,Java 生態(tài)系統(tǒng)發(fā)生了很多變化。最顯著的變化是
    的頭像 發(fā)表于 11-23 16:38 ?979次閱讀
    簡單了解<b class='flag-5'>Java</b>的新<b class='flag-5'>特性</b>

    亮相世界互聯(lián)網(wǎng)大會!Coremail郵箱客戶端4.0重磅發(fā)布

    11月8日,2023年世界互聯(lián)網(wǎng)大會烏鎮(zhèn)峰會盛大開幕,同日,“互聯(lián)網(wǎng)之光”博覽會新產(chǎn)品新技術(shù)發(fā)布(網(wǎng)絡(luò)安全專場)活動在烏鎮(zhèn)互聯(lián)網(wǎng)國際會展中心B2館順利舉辦, Coremail亮相發(fā)布現(xiàn)場,重磅
    的頭像 發(fā)表于 11-12 17:32 ?354次閱讀
    亮相世界互聯(lián)網(wǎng)大會!Coremail郵箱客戶端4.0<b class='flag-5'>重磅</b><b class='flag-5'>發(fā)布</b>

    MTK天璣9300重磅發(fā)布!全大核時代到來,330億參數(shù)AI大模型裝入手機(jī)

    2023 年11月6日MediaTek發(fā)布天璣9300旗艦5G生成式AI 移動芯片。憑借創(chuàng)新的全大核架構(gòu)設(shè)計,提供遠(yuǎn)超以往的高智能、高性能、高能效、低功耗卓越特性,以極具突破性的先進(jìn)科技,在端側(cè)生成
    的頭像 發(fā)表于 11-07 17:12 ?1783次閱讀
    MTK天璣9300<b class='flag-5'>重磅</b><b class='flag-5'>發(fā)布</b>!全大核時代到來,330億參數(shù)AI大模型裝入手機(jī)

    Java11和Java17使用率達(dá)48%和45%

    2018 年 9 月發(fā)布Java 11 和 2020 年 9 月發(fā)布Java 17 是使用最廣泛的 Java 版本,使用率分別為 4
    的頭像 發(fā)表于 11-01 12:30 ?530次閱讀

    極豪指紋識別芯片JV0103助力OPPO全新旗艦手機(jī)Find N3重磅發(fā)布

    "AI×Sensor"人工智能傳感器供應(yīng)商極豪科技近日宣布,極豪側(cè)邊電容指紋識別芯片JV0103助力OPPO全新旗艦手機(jī)Find N3重磅發(fā)布,以創(chuàng)"芯"
    的頭像 發(fā)表于 10-29 09:25 ?758次閱讀