中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java12有哪些特性

發布時間:2022-01-06 15:59:07 來源:億速云 閱讀:120 作者:iii 欄目:大數據

本篇內容主要講解“Java12有哪些特性”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java12有哪些特性”吧!

JDK 12 新特性一覽:

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

  • 230:Microbenchmark Suite

  • 325:Switch Expressions (Preview)

  • 334:JVM Constants API

  • 340:One AArch74 Port, Not Two

  • 341:Default CDS Archives

  • 344:Abortable Mixed Collections for G1

  • 346:Promptly Return Unused Committed Memory from G1

首先值得關注的是 Switch Expressions,這是一個為開發者準備的特性,我們可以利用具體代碼快速了解一下,下面是傳統 statement 形式的 switch 語法:

switch(day){     case MONDAY:     case FRIDAY:     case SUNDAY:            System.out.println(6);            break;     case TUESDAY:            System.out.println(7);            break;     case THURSDAY:     case SATURDAY:            System.out.println(8);            break;     case WEDNESDAY:            System.out.println(9);            break;}

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

switch (day) {        case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);        case TUESDAY -> System.out.println(7);        case THURSDAY, SATURDAY -> System.out.println(8);        case WEDNESDAY -> System.out.println(9);}

更進一步,下面的表達式,為我們提供了優雅地表達特定場合計算邏輯的方式

int numLetters = switch (day) {       case MONDAY, FRIDAY, SUNDAY -> 6;       case TUESDAY -> 7;       case THURSDAY, SATURDAY -> 8;       case WEDNESDAY -> 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 在移動對象時,對象引用仍然可以訪問。

Java12有哪些特性

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

Java12有哪些特性

其他的一些特性,例如,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 歷史版本維護和未來的演進路線。

到此,相信大家對“Java12有哪些特性”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴南区| 安多县| 通渭县| 二手房| 监利县| 明光市| 永善县| 松江区| 陇西县| 乌拉特中旗| 秦皇岛市| 汉阴县| 吉木乃县| 阳新县| 青海省| 长宁县| 宁河县| 新田县| 安顺市| 宿迁市| 汉中市| 班玛县| 司法| 霸州市| 乡宁县| 辽阳市| 常熟市| 兰考县| 株洲县| 登封市| 九台市| 盐山县| 曲周县| 红原县| 泰安市| 舒兰市| 宽城| 孟州市| 博客| 即墨市| 霍林郭勒市|