日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 架構師社區(qū)
[導讀]JDK 15已經(jīng)于2020年9月15日如期發(fā)布,本文詳細介紹了JDK 15的新特性。


來源:my.oschina.net/waylau/blog/4633203

  • 發(fā)布版本說明
  • 安裝包下載
  • 安裝、驗證
  • JDK 15 新特性說明

JDK 15已經(jīng)于2020年9月15日如期發(fā)布。本文介紹JDK 15新特性。

發(fā)布版本說明

根據(jù)發(fā)布的規(guī)劃,這次發(fā)布的 JDK 15 將是一個短期的過度版,只會被 Oracle 支持(維護)6 個月,直到明年 3 月的 JDK 16 發(fā)布此版本將停止維護。而 Oracle 下一個長期支持版(LTS 版)會在明年的 9 月份發(fā)布(Java 17),LTS 版每 3 年發(fā)布一個,上一次長期支持版是 18 年 9 月發(fā)布的 JDK 11。下圖展示了各個版本的發(fā)布歷史。

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

安裝包下載

主要分為OpenJDK版本和Oracle版本,下載地址如下:

  • OpenJDK版本:https://jdk.java.net/15/
  • Oracle版本:http://www.oracle.com/technetwork/java/javase/downloads/index.html

上述版本,如果是個人學習用途,則差異不大。但如果是用于商業(yè)用途,則需要仔細看好相關的授權。Oracle JDK根據(jù)二進制代碼許可協(xié)議獲得許可,而OpenJDK根據(jù)GPL v2許可獲得許可。

安裝、驗證

本例子以OpenJDK版本為例。解壓安裝包openjdk-15_windows-x64_bin.zip到任意位置。

設置系統(tǒng)環(huán)境變量“JAVA_HOME”,如下圖所示。

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

在用戶變量“Path”中,增加“%JAVA_HOME%\bin”。

安裝完成后,執(zhí)行下面命令進行驗證:

>java?-version
openjdk?version?"15"?2020-09-15
OpenJDK?Runtime?Environment?(build?15+36-1562)
OpenJDK?64-Bit?Server?VM?(build?15+36-1562,?mixed?mode,?sharing)

更多有關Java的基本知識,可以參閱《Java核心編程》這本書,描述的非常詳細。

JDK 15 新特性說明

JDK 15 為用戶提供了14項主要的增強/更改,包括一個孵化器模塊,三個預覽功能,兩個不推薦使用的功能以及兩個刪除功能。

1. EdDSA 數(shù)字簽名算法

新加入 Edwards-Curve 數(shù)字簽名算法(EdDSA)實現(xiàn)加密簽名。在許多其它加密庫(如 OpenSSL 和 BoringSSL)中得到支持。與 JDK 中的現(xiàn)有簽名方案相比,EdDSA 具有更高的安全性和性能。這是一個新的功能。

使用示例如下:

//?example:?generate?a?key?pair?and?sign
KeyPairGenerator?kpg?=?KeyPairGenerator.getInstance("Ed25519");
KeyPair?kp?=?kpg.generateKeyPair();
//?algorithm?is?pure?Ed25519
Signature?sig?=?Signature.getInstance("Ed25519");
sig.initSign(kp.getPrivate());
sig.update(msg);
byte[]?s?=?sig.sign();

//?example:?use?KeyFactory?to?contruct?a?public?key
KeyFactory?kf?=?KeyFactory.getInstance("EdDSA");
boolean?xOdd?=?...
BigInteger?y?=?...
NamedParameterSpec?paramSpec?=?new?NamedParameterSpec("Ed25519");
EdECPublicKeySpec?pubSpec?=?new?EdECPublicKeySpec(paramSpec,?new?EdPoint(xOdd,?y));
PublicKey?pubKey?=?kf.generatePublic(pubSpec);

有關EdDSA 數(shù)字簽名算法的詳細內容見RFC 8032規(guī)范。

2. 封閉類(預覽特性)

可以是封閉類和或者封閉接口,用來增強 Java 編程語言,防止其他類或接口擴展或實現(xiàn)它們。

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

示例如下:

public?abstract?sealed?class?Student
????permits?ZhangSan,?LiSi,?ZhaoLiu?
{
????...

}

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

3. 隱藏類

此功能可幫助需要在運行時生成類的框架??蚣苌深愋枰獎討B(tài)擴展其行為,但是又希望限制對這些類的訪問。隱藏類很有用,因為它們只能通過反射訪問,而不能從普通字節(jié)碼訪問。此外,隱藏類可以獨立于其他類加載,這可以減少框架的內存占用。這是一個新的功能。

4. 移除了 Nashorn JavaScript 腳本引擎

移除了 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 腳本語言的結構、API 的改編速度越來越快,維護 Nashorn 太有挑戰(zhàn)性了,所以……。

5. 重新實現(xiàn) DatagramSocket API

重新實現(xiàn)舊版 DatagramSocket API,更簡單、更現(xiàn)代的實現(xiàn)來代替java.net.DatagramSocket和java.net.MulticastSocketAPI 的基礎實現(xiàn),提高了 JDK 的可維護性和穩(wěn)定性。

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

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

6. 準備禁用和廢除偏向鎖

在 JDK 15 中,默認情況下禁用偏向鎖(Biased Locking),并棄用所有相關的命令行選項。

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

7. 模式匹配(第二次預覽)

第一次預覽是 JDK 14 中提出來的,點擊這里查看我之前寫的詳細教程。

Java 14 之前用法:

if?(obj?instanceof?String)?{
????String?s?=?(String)?obj;
????//?使用s
}

Java 14之后的用法:

if?(obj?instanceof?String?s)?{
????//?使用s
}

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

8. ZGC 功能轉正

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

ZGC 已由JEP 333集成到JDK 11 中,其目標是通過減少 GC 停頓時間來提高性能。借助 JEP 377,JDK 15 將 ZGC 垃圾收集器從預覽特性變更為正式特性而已,沒錯,轉正了。

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

9. 文本塊功能轉正

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

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

Java 13 之前用法,使用one-dimensional的字符串語法:

String?html?=?"????

Hello,?world

\n"
?+
??????????????"\n";

Java 13 之后用法,使用two-dimensional文本塊語法:

String?html?=?"""
??????????????????

Hello,?world


??????????????
??????????????"
"";

10. Shenandoah 垃圾回收算法轉正

Shenandoah 垃圾回收從實驗特性變?yōu)楫a(chǎn)品特性。這是一個從 JDK 12 引入的回收算法,該算法通過與正在運行的 Java 線程同時進行疏散工作來減少 GC 暫停時間。Shenandoah 的暫停時間與堆大小無關,無論堆棧是 200 MB 還是 200 GB,都具有相同的一致暫停時間。

JDK 15 Shenandoah垃圾收集器從預覽特性變更為正式特性而已,沒錯,又是轉正了。

11. 移除了 Solaris 和 SPARC 端口。

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

12. 外部存儲器訪問 API(二次孵化)

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

目的是引入一個 API,以允許 Java 程序安全有效地訪問 Java 堆之外的外部內存。這同樣是 Java 14 的一個預覽特性。

13. Records Class(二次預覽)

Records Class 也是第二次出現(xiàn)的預覽功能,它在 JDK 14 中也出現(xiàn)過一次了,使用 Record 可以更方便的創(chuàng)建一個常量類,使用的前后代碼對比如下。

舊寫法:

class?Point?{
????private?final?int?x;
????private?final?int?y;

????Point(int?x,?int?y)?{
????????this.x?=?x;
????????this.y?=?y;
????}

????int?x()?{?return?x;?}
????int?y()?{?return?y;?}

????public?boolean?equals(Object?o)?{
????????if?(!(o?instanceof?Point))?return?false;
????????Point?other?=?(Point)?o;
????????return?other.x?==?x?&&?other.y?=?y;
????}

????public?int?hashCode()?{
????????return?Objects.hash(x,?y);
????}

????public?String?toString()?{
????????return?String.format("Point[x=%d,?y=%d]",?x,?y);
????}
}

新寫法:

record?Point(int?x,?int?y)?{?}

也就是說在使用了 record 之后,就可以用一行代碼編寫出一個常量類,并且這個常量類還包含了構造方法、toString()、equals() 和 hashCode() 等方法。

14. 廢除 RMI 激活

廢除 RMI 激活,以便在將來進行刪除。需要說明的是,RMI 激活是 RMI 中一個過時的組件,自 Java 8 以來一直是可選的。

         

特別推薦一個分享架構+算法的優(yōu)質內容,還沒關注的小伙伴,可以長按關注一下:

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

長按訂閱更多精彩▼

最強JDK15安裝與講解,有點想升級,終于要廢棄偏向鎖了!

如有收獲,點個在看,誠摯感謝


免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉