自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java15正式發(fā)布, 14個(gè)新特性,刷新你的認(rèn)知!!_IT技術(shù)周刊第645期

技術(shù)期刊
技術(shù)資訊盡在技術(shù)周刊

 

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ū)別這里不撰述了,不清楚的請(qǐng)點(diǎn)擊這里進(jìn)行查看。

現(xiàn)在的 JDK 真變成了“版本帝”,無(wú)力吐槽啊,版本發(fā)到 15,大部分人卻都還在用著 JDK 7/8,甚至 6。不過(guò)沒(méi)關(guān)系,多了解一下,多掌握一點(diǎn)新東西,對(duì)你來(lái)說(shuō)沒(méi)有壞處。

新特性

JDK 15 新特性一覽表:

ID JEP Feature
1 339 Edwards-Curve Digital Signature Algorithm (EdDSA)
2 360 Sealed Classes (Preview)
3 371 Hidden Classes
4 372 Remove the Nashorn JavaScript Engine
5 373 Reimplement the Legacy DatagramSocket API
6 374 Disable and Deprecate Biased Locking
7 375 Pattern Matching for instanceof (Second Preview)
8 377 ZGC: A Scalable Low-Latency Garbage Collector
9 378 Text Blocks
10 379 Shenandoah: A Low-Pause-Time Garbage Collector
11 381 Remove the Solaris and SPARC Ports
12 383 Foreign-Memory Access API (Second Incubator)
13 384 Records (Second Preview)
14 385 Deprecate RMI Activation for Removal

JDK 15 一次發(fā)布了 14 個(gè)新特性,下面棧長(zhǎng)帶大家來(lái)解讀下這些新特性!

339:Edwards-Curve Digital Signature Algorithm (EdDSA)

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

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

360:Sealed Classes (Preview)

封閉類(預(yù)覽特性),可以是封閉類和或者封閉接口,用來(lái)增強(qiáng) Java 編程語(yǔ)言,防止其他類或接口擴(kuò)展或?qū)崿F(xiàn)它們。

這個(gè)牛逼啊,有了這個(gè)特性,意味著以后不是你想繼承就繼承,想實(shí)現(xiàn)就實(shí)現(xiàn)了,你得經(jīng)過(guò)允許才行。

來(lái)看這個(gè)示例:

  1. public abstract sealed class Student  
  2.     permits ZhangSan, LiSi, ZhaoLiu {  
  3.     ...         

類 Student 被 sealed 修飾,說(shuō)明它是一個(gè)封閉類,并且只允許指定的 3 個(gè)子類繼承。

371:Hidden Classes

隱藏類,這一看也是個(gè)很有意思的特性。

隱藏類是為框架(frameworks)所設(shè)計(jì)的,隱藏類不能直接被其他類的字節(jié)碼使用,只能在運(yùn)行時(shí)生成類并通過(guò)反射間接使用它們。

372:Remove the Nashorn JavaScript Engine

移除了 Nashorn JavaScript 腳本引擎、APIs,以及 jjs 工具。這些早在 JDK 11 中就已經(jīng)被標(biāo)記為 deprecated 了,JDK 15 被移除就很正常了。

Nashorn 是 JDK 1.8 引入的一個(gè) JavaScript 腳本引擎,用來(lái)取代 Rhino 腳本引擎。Nashorn 是 ECMAScript-262 5.1 的完整實(shí)現(xiàn),增強(qiáng)了 Java 和 JavaScript 的兼容性,并且大大提升了性能。

為什么要移除?

官方的描述是,隨著 ECMAScript 腳本語(yǔ)言的結(jié)構(gòu)、API 的改編速度越來(lái)越快,維護(hù) Nashorn 太有挑戰(zhàn)性了,所以……。

373:Reimplement the Legacy DatagramSocket API

重新實(shí)現(xiàn)了老的 DatagramSocket API 接口,更改了 java.net.DatagramSocket 和 java.net.MulticastSocket 為更加簡(jiǎn)單、現(xiàn)代化的底層實(shí)現(xiàn),更易于維護(hù)和調(diào)試。

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

374:Disable and Deprecate Biased Locking

準(zhǔn)備禁用和廢除偏向鎖,在 JDK 15 中,默認(rèn)情況下禁用偏向鎖,并棄用所有相關(guān)的命令行選項(xiàng)。

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

375:Pattern Matching for instanceof (Second Preview)

模式匹配(第二次預(yù)覽),第一次預(yù)覽是 JDK 14 中提出來(lái)的,點(diǎn)擊這里查看棧長(zhǎng)之前寫(xiě)的詳細(xì)教程。

Java 14 之前:

  1. if (object instanceof Kid) {  
  2.     Kid kid = (Kid) object;  
  3.     // ...  
  4. } else if (object instanceof Kiddle) {  
  5.     Kid kid = (Kid) object;  
  6.     // ...  

Java 14+:

  1. if (object instanceof Kid kid) {  
  2.     // ...  
  3. } else if (object instanceof Kiddle kiddle) {  
  4.     // ... 
  5.  

Java 15 并沒(méi)有對(duì)此特性進(jìn)行調(diào)整,繼續(xù)預(yù)覽特性,只是為了收集更多的用戶反饋,可能還不成熟吧。

377:ZGC: A Scalable Low-Latency Garbage Collector

ZGC:一個(gè)可伸縮、低延遲的垃圾回收器。

ZGC 最早是在 JDK 11 中集成進(jìn)來(lái)的,JDK 15 只是將 ZGC 垃圾收集器從預(yù)覽特性變更為正式特性而已,沒(méi)錯(cuò),轉(zhuǎn)正了。

這個(gè) JEP 不會(huì)更改默認(rèn)的 GC,默認(rèn)仍然是 G1。

378:Text Blocks

文本塊,是一個(gè)多行字符串,它可以避免使用大多數(shù)轉(zhuǎn)義符號(hào),自動(dòng)以可預(yù)測(cè)的方式格式化字符串,并讓開(kāi)發(fā)人員在需要時(shí)可以控制格式。

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

來(lái)看下這個(gè)示例你就懂了:

Java 13 之前:

  1. String html = "<html>\n" +  
  2.               "    <body>\n" +  
  3.               "        <p>Hi, Java技術(shù)棧</p>\n" +  
  4.               "        <p>歡迎關(guān)注,分享更多干貨</p>\n" +  
  5.               "    </body>\n" +  
  6.               "</html>\n"; 

Java 13+:

  1. String html = "" 
  2.               <html>  
  3.                   <body>  
  4.                       <p>Hi, Java技術(shù)棧</p>  
  5.                       <p>歡迎關(guān)注,分享更多干貨</p>  
  6.                   </body>  
  7.               </html>  
  8.               """; 

去掉那些無(wú)用的換行和拼接,是不是太爽了。。這個(gè)詳細(xì)教程計(jì)劃再出一篇,關(guān)注公眾號(hào)Java技術(shù)棧第一時(shí)間推送。

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

Shenandoah:一個(gè)低停頓時(shí)間的垃圾回收器。

Shenandoah 最早是在 JDK 12 中集成進(jìn)來(lái)的,JDK 15 只是將 Shenandoah 垃圾收集器從預(yù)覽特性變更為正式特性而已,沒(méi)錯(cuò),又是轉(zhuǎn)正了。

381:Remove the Solaris and SPARC Ports

移除了 Solaris 和 SPARC 端口。

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

383:Foreign-Memory Access API (Second Incubator)

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

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

384:Records (Second Preview)

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

Records 在某些場(chǎng)合可以干掉 Lombok 的存在,能自動(dòng)生成了類構(gòu)造器、toString()、hashCode()、equals(),以及類似 getter 的變量訪問(wèn)方法。

使用方式:

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

實(shí)際生成:

看完是不是有點(diǎn) Lombok 的感覺(jué)?具體可以點(diǎn)擊這里查看棧長(zhǎng)之前寫(xiě)的詳細(xì)教程。

385:Deprecate RMI Activation for Removal

廢除 RMI 激活,以便在將來(lái)進(jìn)行刪除。

需要說(shuō)明的是,RMI 激活是 RMI 中一個(gè)過(guò)時(shí)的組件,自 Java 8 以來(lái)一直是可選的。

總結(jié)

本文主要介紹了 JDK/Java 15 的 14 個(gè)新特性,后面棧長(zhǎng)有時(shí)間也會(huì)繼續(xù)出一些 JDK 15 詳細(xì)教程,關(guān)注公眾號(hào)Java技術(shù)棧第一時(shí)間推送哦。如果你想看歷史 Java 8 - 14 新特性教程,也可以在公眾號(hào)菜單中進(jìn)行閱讀。

最后,來(lái)看下 Oracle Java 支持路線圖:

JDK 15 并不是一個(gè)長(zhǎng)期支持的版本,只支持 6 個(gè)月到 2021 年 3 月,上一個(gè)長(zhǎng)期支持版本還是 JDK 11,所以千萬(wàn)不要把非長(zhǎng)期支持版本用在生產(chǎn)。

責(zé)任編輯:張潔 來(lái)源: 技術(shù)周刊
相關(guān)推薦

2020-09-17 13:10:54

Java1編程語(yǔ)言新特性

2015-08-10 13:42:04

51CTOIT技術(shù)周刊Java

2014-03-31 10:52:47

IT技術(shù)周刊

2011-10-19 09:41:58

IT技術(shù)周刊

2011-06-10 14:21:54

網(wǎng)絡(luò)安全技術(shù)周刊

2011-08-18 09:39:39

開(kāi)發(fā)技術(shù)周刊

2022-01-17 10:01:19

DevOpsPython

2020-10-26 10:09:45

JavaJava 15語(yǔ)法

2016-03-03 14:44:09

網(wǎng)絡(luò)安全技術(shù)周刊

2011-01-23 12:41:56

IT技術(shù)周刊

2011-05-13 11:42:27

網(wǎng)絡(luò)安全技術(shù)周刊

2014-03-19 11:04:14

Java 8Java8特性

2009-04-27 12:42:54

技術(shù)周刊收購(gòu)Oracle

2024-07-02 08:36:09

JavaScriptUnicode模式

2014-02-18 17:09:56

網(wǎng)絡(luò)·安全技術(shù)周刊

2011-04-19 11:35:12

技術(shù)周刊

2016-03-14 13:14:14

51CTOIT技術(shù)周刊編程

2015-01-20 09:51:29

IT技術(shù)周刊

2023-09-21 11:12:25

2016-03-24 18:49:28

網(wǎng)絡(luò)安全技術(shù)周刊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)