Java 15 正式發(fā)布, 14 個新特性不从,刷新你的認知OЫ恪!

JDK 15 2020/09/15 如期而至椿息!

這個時間牛逼啊载弄,和蘋果發(fā)布會同天耘拇?

OracleJDK 15 發(fā)布地址:

https://www.oracle.com/java/technologies/javase/15all-relnotes.html

OpenJDK 15 發(fā)布地址:

https://openjdk.java.net/projects/jdk/15/

OracleJDK 和 OpenJDK 兩者的區(qū)別這里不撰述了,不清楚的請點擊這里進行查看宇攻。

現(xiàn)在的 JDK 真變成了“版本帝”惫叛,無力吐槽啊,版本發(fā)到 15逞刷,大部分人卻都還在用著 JDK 7/8嘉涌,甚至 6。不過沒關(guān)系夸浅,多了解一下仑最,多掌握一點新東西,對你來說沒有壞處帆喇。

新特性

JDK 15 新特性一覽表:

IDJEPFeature1339Edwards-Curve Digital Signature Algorithm (EdDSA)2360Sealed Classes (Preview)3371Hidden Classes4372Remove the Nashorn JavaScript Engine5373Reimplement the Legacy DatagramSocket API6374Disable and Deprecate Biased Locking7375Pattern Matching for instanceof (Second Preview)8377ZGC: A Scalable Low-Latency Garbage Collector9378Text Blocks10379Shenandoah: A Low-Pause-Time Garbage Collector11381Remove the Solaris and SPARC Ports12383Foreign-Memory Access API (Second Incubator)13384Records (Second Preview)14385Deprecate RMI Activation for Removal

JDK 15 一次發(fā)布了 14 個新特性警医,下面帶大家來解讀下這些新特性!

339:Edwards-Curve Digital Signature Algorithm (EdDSA)

Edwards-Curve 數(shù)據(jù)簽名算法(EdDSA)坯钦,一種根據(jù) RFC 8032 規(guī)范所描述的 Edwards-Curve 數(shù)字簽名算法(EdDSA)實現(xiàn)加密簽名预皇,實現(xiàn)了一種 RFC 8032 標準化方案,但它不能代替 ECDSA婉刀。

EdDSA 是一種現(xiàn)代的橢圓曲線簽名方案吟温,與 JDK 中現(xiàn)有的簽名方案相比,它有很多優(yōu)勢突颊。

360:Sealed Classes (Preview)

封閉類(預(yù)覽特性)鲁豪,可以是封閉類和或者封閉接口,用來增強 Java 編程語言律秃,防止其他類或接口擴展或?qū)崿F(xiàn)它們爬橡。

這個牛逼啊,有了這個特性棒动,意味著以后不是你想繼承就繼承堤尾,想實現(xiàn)就實現(xiàn)了,你得經(jīng)過允許才行迁客。

來看這個示例:

public abstract sealed class Student

permits ZhangSan, LiSi, ZhaoLiu {

...

}

類 Student 被 sealed 修飾,說明它是一個封閉類辞槐,并且只允許指定的 3 個子類繼承掷漱。

371:Hidden Classes

隱藏類,這一看也是個很有意思的特性榄檬。

隱藏類是為框架(frameworks)所設(shè)計的卜范,隱藏類不能直接被其他類的字節(jié)碼使用,只能在運行時生成類并通過反射間接使用它們鹿榜。

372:Remove the Nashorn JavaScript Engine

移除了 Nashorn JavaScript 腳本引擎海雪、APIs锦爵,以及 jjs 工具。這些早在 JDK 11 中就已經(jīng)被標記為 deprecated 了奥裸,JDK 15 被移除就很正常了险掀。

Nashorn 是 JDK 1.8 引入的一個 JavaScript 腳本引擎,用來取代 Rhino 腳本引擎湾宙。Nashorn 是 ECMAScript-262 5.1 的完整實現(xiàn)樟氢,增強了 Java 和 JavaScript 的兼容性,并且大大提升了性能侠鳄。

為什么要移除埠啃?

官方的描述是,隨著 ECMAScript 腳本語言的結(jié)構(gòu)伟恶、API 的改編速度越來越快碴开,維護Nashorn 太有挑戰(zhàn)性了,所以……博秫。

373:Reimplement the Legacy DatagramSocket API

重新實現(xiàn)了老的 DatagramSocket API 接口潦牛,更改了 java.net.DatagramSocket 和 java.net.MulticastSocket 為更加簡單、現(xiàn)代化的底層實現(xiàn)台盯,更易于維護和調(diào)試罢绽。

新的底層實現(xiàn)將很容易使用虛擬線程,目前正在 Loom 項目中進行探索静盅。這也是 JEP 353 的后續(xù)更新版本良价,JEP 353 已經(jīng)重新實現(xiàn)了 Socket API。

374:Disable and Deprecate Biased Locking

準備禁用和廢除偏向鎖蒿叠,在 JDK 15 中明垢,默認情況下禁用偏向鎖,并棄用所有相關(guān)的命令行選項市咽。

后面再確定是否需要繼續(xù)支持偏向鎖痊银,國為維護這種鎖同步優(yōu)化的成本太高了。

375:Pattern Matching for instanceof (Second Preview)

模式匹配(第二次預(yù)覽)施绎,第一次預(yù)覽是 JDK 14 中提出來的

Java 14 之前:

if (object instanceof Kid) {

Kid kid = (Kid) object;

// ...

} else if (object instanceof Kiddle) {

Kid kid = (Kid) object;

// ...

}

Java 14+:

if (object instanceof Kid kid) {

// ...

} else if (object instanceof Kiddle kiddle) {

// ...

}

Java 15 并沒有對此特性進行調(diào)整溯革,繼續(xù)預(yù)覽特性,只是為了收集更多的用戶反饋谷醉,可能還不成熟吧致稀。

377:ZGC: A Scalable Low-Latency Garbage Collector

ZGC:一個可伸縮、低延遲的垃圾回收器俱尼。

ZGC 最早是在 JDK 11 中集成進來的抖单,JDK 15 只是將 ZGC 垃圾收集器從預(yù)覽特性變更為正式特性而已,沒錯,轉(zhuǎn)正了矛绘。

這個 JEP 不會更改默認的 GC耍休,默認仍然是 G1。

378:Text Blocks

文本塊货矮,是一個多行字符串羊精,它可以避免使用大多數(shù)轉(zhuǎn)義符號,自動以可預(yù)測的方式格式化字符串次屠,并讓開發(fā)人員在需要時可以控制格式园匹。

文本塊最早準備在 JDK 12 添加的,但最終撤消了劫灶,然后在 JDK 13 中作為預(yù)覽特性進行了添加裸违,然后又在 JDK 14 中再次預(yù)覽,在 JDK 15 中本昏,文本塊終于轉(zhuǎn)正供汛,暫不再做進一步的更改。

來看下這個示例你就懂了:

Java 13 之前:

String html = "<html>\n" +

" <body>\n" +

" <p>Hi, 啥啥啥</p>\n" +

" <p>歡迎關(guān)注涌穆,分享更多干貨</p>\n" +

" </body>\n" +

"</html>\n";

Java 13+:

String html = """

<html>

<body>

<p>Hi,啥啥啥</p>

<p>歡迎關(guān)注怔昨,分享更多干貨</p>

</body>

</html>

""";

去掉那些無用的換行和拼接,是不是太爽了宿稀。趁舀。

379:Shenandoah: A Low-Pause-Time Garbage Collector

Shenandoah:一個低停頓時間的垃圾回收器。

Shenandoah 最早是在 JDK 12 中集成進來的祝沸,JDK 15 只是將 Shenandoah 垃圾收集器從預(yù)覽特性變更為正式特性而已矮烹,沒錯,又是轉(zhuǎn)正了罩锐。

381:Remove the Solaris and SPARC Ports

移除了 Solaris 和 SPARC 端口奉狈。

移除了 Solaris/SPARC、Solaris/x64 和 Linux/SPARC 端口的源代碼及構(gòu)建支持涩惑。這些端口在 JDK 14 中就已經(jīng)被標記為 deprecated 了仁期,JDK 15 被移除也不奇怪。

383:Foreign-Memory Access API (Second Incubator)

外存訪問 API(二次孵化)竭恬,可以允許 Java 應(yīng)用程序安全有效地訪問 Java 堆之外的外部內(nèi)存跛蛋。

這個最早在 JDK 14 中成為孵化特性,JDK 15 繼續(xù)二次孵化并對其 API 有了一些更新痊硕。

384:Records (Second Preview)

Records 最早在 JDK 14 中成為預(yù)覽特性赊级,JDK 15 繼續(xù)二次預(yù)覽。

Records 在某些場合可以干掉 Lombok 的存在寿桨,能自動生成了類構(gòu)造器、toString()、hashCode()亭螟、equals()挡鞍,以及類似 getter 的變量訪問方法。

使用方式:

public record Student(String name, int id, int age) {}

實際生成:

?


看完是不是有點 Lombok 的感覺预烙?

385:Deprecate RMI Activation for Removal

廢除 RMI 激活墨微,以便在將來進行刪除。

需要說明的是扁掸,RMI 激活是 RMI 中一個過時的組件翘县,自 Java 8 以來一直是可選的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谴分,一起剝皮案震驚了整個濱河市锈麸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牺蹄,老刑警劉巖忘伞,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沙兰,居然都是意外死亡氓奈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門鼎天,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舀奶,“玉大人,你說我怎么就攤上這事斋射∮祝” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵绩鸣,是天一觀的道長怀大。 經(jīng)常有香客問我,道長呀闻,這世上最難降的妖魔是什么化借? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮捡多,結(jié)果婚禮上蓖康,老公的妹妹穿的比我還像新娘。我一直安慰自己垒手,他們只是感情好蒜焊,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著科贬,像睡著了一般泳梆。 火紅的嫁衣襯著肌膚如雪鳖悠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天优妙,我揣著相機與錄音乘综,去河邊找鬼。 笑死套硼,一個胖子當(dāng)著我的面吹牛卡辰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邪意,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼九妈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雾鬼?” 一聲冷哼從身側(cè)響起萌朱,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呆贿,沒想到半個月后嚷兔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡做入,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年冒晰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竟块。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡壶运,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浪秘,到底是詐尸還是另有隱情蒋情,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布耸携,位于F島的核電站棵癣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏夺衍。R本人自食惡果不足惜狈谊,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沟沙。 院中可真熱鬧河劝,春花似錦、人聲如沸矛紫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仰楚。三九已至肪笋,卻和暖如春粒氧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敞临。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工催享, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哟绊。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像痰憎,于是被迫代替她去往敵國和親票髓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348