本篇內(nèi)容主要講解“Java12有哪些特性”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java12有哪些特性”吧!
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出懷寧免費(fèi)做網(wǎng)站回饋大家。
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
首先值得關(guān)注的是 Switch Expressions,這是一個(gè)為開發(fā)者準(zhǔn)備的特性,我們可以利用具體代碼快速了解一下,下面是傳統(tǒng) statement 形式的 switch 語(yǔ)法:
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;}
如果有編碼經(jīng)驗(yàn),你一定知道,switch 語(yǔ)句如果漏寫了一個(gè) break,那么邏輯往往就跑偏了,這種方式既繁瑣,又容易出錯(cuò)。如果換成 switch 表達(dá)式,Pattern Matching 機(jī)制能夠自然地保證只有單一路徑會(huì)被執(zhí)行,請(qǐng)看下面的代碼示例:
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);}
更進(jìn)一步,下面的表達(dá)式,為我們提供了優(yōu)雅地表達(dá)特定場(chǎng)合計(jì)算邏輯的方式
int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9;};
Switch Expressions 或者說(shuō)起相關(guān)的 Pattern Matching 特性,為我們提供了勾勒出了 Java 語(yǔ)法進(jìn)化的一個(gè)趨勢(shì),將開發(fā)者從復(fù)雜繁瑣的低層次抽象中逐漸解放出來(lái),以更高層次更優(yōu)雅的抽象,既降低代碼量,又避免意外編程錯(cuò)誤的出現(xiàn),進(jìn)而提高代碼質(zhì)量和開發(fā)效率。
第二,則是很有現(xiàn)實(shí)意義度 Shenandoah GC。它是 Redhat 主導(dǎo)開發(fā)的 Pauseless GC 實(shí)現(xiàn),從大概 2013 年開始研發(fā),終于取得了重要的階段性成果,與其他 Pauseless GC 類似,Shenandoah GC 主要目標(biāo)是 99.9% 的暫停小于 10ms,暫停與堆大小無(wú)關(guān)等。
也許了解 Shenandoah GC 的人比較少,業(yè)界聲音比較響亮的是 Oracle 在 JDK11 中開源出來(lái)的 ZGC,或者商業(yè)版本的 Azul C4(Continuously Concurrent Compacting Collector)。但是,筆者認(rèn)為,至少目前,其實(shí)際意義大于后兩者,因?yàn)椋?/p>
使用 ZGC 的最低門檻是升級(jí)到 JDK11,對(duì)很多團(tuán)隊(duì)來(lái)說(shuō),這種版本的跳躍并不是非常低成本的事情,更何況是尚不清楚 ZGC 在自身業(yè)務(wù)場(chǎng)景中的實(shí)際表現(xiàn)如何。
而 C4,畢竟是土豪們的選擇,現(xiàn)實(shí)情況是,有多少公司連個(gè)幾十塊錢的 License 都不舍得…
而 Shenandoah GC 可是有穩(wěn)定的 JDK8u 版本發(fā)布的哦,據(jù)我所知已經(jīng)有個(gè)別公司在 HBase 等高實(shí)時(shí)性產(chǎn)品中實(shí)踐許久。
從原理的角度,我們可以參考該項(xiàng)目官方的示意圖,其內(nèi)存結(jié)構(gòu)與 G1 非常相似,都是將內(nèi)存劃分為類似棋盤的 region。整體流程與 G1 也是比較相似的,最大的區(qū)別在于實(shí)現(xiàn)了并發(fā)的 Evacuation 環(huán)節(jié),引入的 Brooks Forwarding Pointer 技術(shù)使得 GC 在移動(dòng)對(duì)象時(shí),對(duì)象引用仍然可以訪問(wèn)。
下面是 jbb15 benchmark 中,Shenandoah GC 相對(duì)于其他主流 GC 的表現(xiàn),GC 暫停相比于 CMS 等選擇有數(shù)量級(jí)程度的提高,對(duì)于 GC 暫停非常敏感的場(chǎng)景,價(jià)值還是很明顯的,能夠在 SLA 層面有顯著提高。當(dāng)然,這種對(duì)于低延遲的保證,也是以消耗 CPU 等計(jì)算資源為代價(jià)的,實(shí)際吞吐量表現(xiàn)也不是非常明朗,需要看企業(yè)的實(shí)際場(chǎng)景需求,并不是一個(gè)一勞永逸的解決方案。
其他的一些特性,例如,G1 相關(guān)的兩個(gè)特性是對(duì) G1 在特定場(chǎng)景不足的有效改進(jìn),但談不上是突破性的提高,不再一一列舉。
與 JDK11 這種長(zhǎng)期支持版本(Long-Term-Support,LTS)相比,JDK12 似乎關(guān)注度有限,大家對(duì)于 JDK 這種頻繁的節(jié)奏也有點(diǎn)麻木了,那么
JDK12 這種非 LTS 版本,是否有什么生產(chǎn)環(huán)境價(jià)值?
Java 新的發(fā)布模式是否達(dá)到了其快速落地和迭代新特性的目的?
也許不會(huì)有太多公司直接選擇 JDK12,但個(gè)別的生產(chǎn)實(shí)踐并不遙遠(yuǎn)。比如,我所在部門在實(shí)踐場(chǎng)景中發(fā)現(xiàn),利用 JDK 12 的 Abortable Mixed Collections for G1,解決了 HDFS 在特定場(chǎng)景中 G1 Evacuation 時(shí)間過(guò)長(zhǎng)的困擾,雖然最后團(tuán)隊(duì)選擇將其 backport 到了自己的 JDK11 版本中,但如果沒(méi)有快速交付的預(yù)覽版 JDK12,也不會(huì)如此快速的得到結(jié)論。
而對(duì)另一個(gè)問(wèn)題,筆者認(rèn)為目前看是非常成功的,解開了 Java/JVM 演進(jìn)的許多枷鎖,至關(guān)重要的是,OpenJDK 的權(quán)力中心,正在轉(zhuǎn)移到開發(fā)社區(qū)和開發(fā)者手中。在新的模式中,既可以利用 LTS 滿足企業(yè)長(zhǎng)期可靠支持的需求,也可以滿足各種開發(fā)者對(duì)于新特性迭代的訴求。你可能注意到了 Switch Expressions 被打上了預(yù)覽(Preview)的標(biāo)簽,Shenandoah GC 則是實(shí)驗(yàn)(Experimental)特性,這些都是以往的發(fā)布周期下不大現(xiàn)實(shí)的,因?yàn)橛?nbsp;2-3 年的最小間隔粒度來(lái)實(shí)驗(yàn)一個(gè)特性,基本是不現(xiàn)實(shí)的。
可以預(yù)計(jì),JDK8 在未來(lái)的一段時(shí)間仍將是主流,我們已經(jīng)注意到 Amazon、Alibaba、Redhat、AdoptOpenJDK 等等廠商或社區(qū),紛紛發(fā)布了自己的 JDK8 等產(chǎn)品,開始競(jìng)賽長(zhǎng)期支持版本 JDK 的主導(dǎo)權(quán),筆者認(rèn)為這是非常好的跡象,反映了主流廠商對(duì)于 Java 的投資力度增大。
是否會(huì)帶來(lái) Java/JVM 的碎片化呢?多少會(huì)發(fā)生一些,但從目前的合作模式來(lái)看,OpenJDK 仍然是合作的中心,主導(dǎo)這 Java 歷史版本維護(hù)和未來(lái)的演進(jìn)路線。
到此,相信大家對(duì)“Java12有哪些特性”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文題目:Java12有哪些特性
URL網(wǎng)址:http://chinadenli.net/article12/gigodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、虛擬主機(jī)、網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)