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

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


來(lái)源:my.oschina.net/waylau/blog/4633203

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

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

發(fā)布版本說(shuō)明

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

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

安裝包下載

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

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

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

安裝、驗(yàn)證

本例子以O(shè)penJDK版本為例。解壓安裝包openjdk-15_windows-x64_bin.zip到任意位置。

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

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

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

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

>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)

更多有關(guān)Java的基本知識(shí),可以參閱《Java核心編程》這本書(shū),描述的非常詳細(xì)。

JDK 15 新特性說(shuō)明

JDK 15 為用戶(hù)提供了14項(xiàng)主要的增強(qiáng)/更改,包括一個(gè)孵化器模塊,三個(gè)預(yù)覽功能,兩個(gè)不推薦使用的功能以及兩個(gè)刪除功能。

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

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

使用示例如下:

//?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);

有關(guān)EdDSA 數(shù)字簽名算法的詳細(xì)內(nèi)容見(jiàn)RFC 8032規(guī)范。

2. 封閉類(lèi)(預(yù)覽特性)

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

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

示例如下:

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

}

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

3. 隱藏類(lèi)

此功能可幫助需要在運(yùn)行時(shí)生成類(lèi)的框架??蚣苌深?lèi)需要?jiǎng)討B(tài)擴(kuò)展其行為,但是又希望限制對(duì)這些類(lèi)的訪(fǎng)問(wèn)。隱藏類(lèi)很有用,因?yàn)樗鼈冎荒芡ㄟ^(guò)反射訪(fǎng)問(wèn),而不能從普通字節(jié)碼訪(fǎng)問(wèn)。此外,隱藏類(lèi)可以獨(dú)立于其他類(lèi)加載,這可以減少框架的內(nèi)存占用。這是一個(gè)新的功能。

4. 移除了 Nashorn JavaScript 腳本引擎

移除了 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)性了,所以……。

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

重新實(shí)現(xiàn)舊版 DatagramSocket API,更簡(jiǎn)單、更現(xiàn)代的實(shí)現(xiàn)來(lái)代替java.net.DatagramSocket和java.net.MulticastSocketAPI 的基礎(chǔ)實(shí)現(xiàn),提高了 JDK 的可維護(hù)性和穩(wěn)定性。

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

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

6. 準(zhǔn)備禁用和廢除偏向鎖

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

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

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

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

Java 14 之前用法:

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

Java 14之后的用法:

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

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

8. ZGC 功能轉(zhuǎn)正

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

ZGC 已由JEP 333集成到JDK 11 中,其目標(biāo)是通過(guò)減少 GC 停頓時(shí)間來(lái)提高性能。借助 JEP 377,JDK 15 將 ZGC 垃圾收集器從預(yù)覽特性變更為正式特性而已,沒(méi)錯(cuò),轉(zhuǎn)正了。

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

9. 文本塊功能轉(zhuǎn)正

文本塊,是一個(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)一步的更改。

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

String?html?=?"????

Hello,?world

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

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

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

Hello,?world


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

10. Shenandoah 垃圾回收算法轉(zhuǎn)正

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

JDK 15 Shenandoah垃圾收集器從預(yù)覽特性變更為正式特性而已,沒(méi)錯(cuò),又是轉(zhuǎn)正了。

11. 移除了 Solaris 和 SPARC 端口。

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

12. 外部存儲(chǔ)器訪(fǎng)問(wèn) API(二次孵化)

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

目的是引入一個(gè) API,以允許 Java 程序安全有效地訪(fǎng)問(wèn) Java 堆之外的外部?jī)?nèi)存。這同樣是 Java 14 的一個(gè)預(yù)覽特性。

13. Records Class(二次預(yù)覽)

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

舊寫(xiě)法:

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);
????}
}

新寫(xiě)法:

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

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

14. 廢除 RMI 激活

廢除 RMI 激活,以便在將來(lái)進(jìn)行刪除。需要說(shuō)明的是,RMI 激活是 RMI 中一個(gè)過(guò)時(shí)的組件,自 Java 8 以來(lái)一直是可選的。

         

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

長(zhǎng)按訂閱更多精彩▼

最強(qiáng)JDK15安裝與講解,有點(diǎn)想升級(jí),終于要廢棄偏向鎖了!

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀(guān)點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

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

嵌入式系統(tǒng)開(kāi)發(fā)中,內(nèi)存碎片化始終是困擾程序員的難題。以某工業(yè)控制器項(xiàng)目為例,系統(tǒng)需連續(xù)運(yùn)行5年以上,期間頻繁分配/釋放不同大小的內(nèi)存塊(從16字節(jié)到4KB不等)。傳統(tǒng)malloc/free機(jī)制在運(yùn)行3年后導(dǎo)致內(nèi)存利用率驟...

關(guān)鍵字: 自定義內(nèi)存池設(shè) C語(yǔ)言

在C語(yǔ)言開(kāi)發(fā)的HTTP服務(wù)器項(xiàng)目中,通信異常是常見(jiàn)的調(diào)試挑戰(zhàn)。Wireshark作為網(wǎng)絡(luò)協(xié)議分析領(lǐng)域的“瑞士軍刀”,通過(guò)捕獲和分析數(shù)據(jù)包,能夠精準(zhǔn)定位HTTP通信中的異常環(huán)節(jié)。本文結(jié)合實(shí)際案例,闡述如何利用Wiresha...

關(guān)鍵字: Wireshark C語(yǔ)言

在物聯(lián)網(wǎng)設(shè)備數(shù)量突破200億的今天,數(shù)據(jù)傳輸安全已成為開(kāi)發(fā)者無(wú)法回避的核心命題。某智慧農(nóng)業(yè)項(xiàng)目曾因未加密通信導(dǎo)致傳感器數(shù)據(jù)被篡改,造成300畝農(nóng)田灌溉系統(tǒng)癱瘓。而通過(guò)30分鐘集成OpenSSL庫(kù),同樣的設(shè)備實(shí)現(xiàn)了TLS加...

關(guān)鍵字: OpenSSL C語(yǔ)言

當(dāng)MobileNet在STM32H7上完成單張圖像推理需要1.2秒時(shí),工程師們意識(shí)到:要讓AI真正落地嵌入式設(shè)備,必須突破浮點(diǎn)計(jì)算的桎梏。量化技術(shù)通過(guò)將32位浮點(diǎn)參數(shù)轉(zhuǎn)換為8位整數(shù),在A(yíng)RM Cortex-M7處理器上實(shí)...

關(guān)鍵字: C語(yǔ)言 神經(jīng)網(wǎng)絡(luò)

在C語(yǔ)言的江湖中,內(nèi)存管理如同行走于刀尖之上——稍有不慎,便可能陷入內(nèi)存泄漏的深淵。紅黑樹(shù)作為高效的數(shù)據(jù)結(jié)構(gòu),其復(fù)雜的節(jié)點(diǎn)分配與釋放邏輯更易成為內(nèi)存泄漏的重災(zāi)區(qū)。而Valgrind,這位內(nèi)存調(diào)試領(lǐng)域的“福爾摩斯”,憑借其...

關(guān)鍵字: Valgrind C語(yǔ)言

紅黑樹(shù)作為自平衡二叉搜索樹(shù)的代表,其設(shè)計(jì)靈感源于對(duì)2-3-4樹(shù)的二叉化改造。通過(guò)將多路節(jié)點(diǎn)轉(zhuǎn)換為二叉樹(shù)結(jié)構(gòu)中的顏色標(biāo)記,紅黑樹(shù)在保持O(log n)時(shí)間復(fù)雜度的同時(shí),避免了復(fù)雜的節(jié)點(diǎn)分裂操作。本文將從2-3-4樹(shù)的平衡原...

關(guān)鍵字: 紅黑樹(shù) C語(yǔ)言

當(dāng)某智能攝像頭廠(chǎng)商將服務(wù)器架構(gòu)從多線(xiàn)程切換為單線(xiàn)程事件驅(qū)動(dòng)模型后,設(shè)備在2G網(wǎng)絡(luò)環(huán)境下的并發(fā)連接數(shù)從8個(gè)躍升至1200個(gè),同時(shí)內(nèi)存占用銳減76%。這個(gè)戲劇性轉(zhuǎn)變揭示了一個(gè)被廣泛忽視的真相:在資源受限的嵌入式場(chǎng)景中,線(xiàn)程模...

關(guān)鍵字: 單線(xiàn)程 多線(xiàn)程 C語(yǔ)言

嵌入式開(kāi)發(fā),HTTP服務(wù)器作為數(shù)據(jù)交互的核心組件,其功耗特性直接影響設(shè)備續(xù)航能力。傳統(tǒng)HTTP服務(wù)器依賴(lài)持續(xù)運(yùn)行模式,導(dǎo)致能量浪費(fèi)嚴(yán)重。本文提出一種基于C語(yǔ)言的超低功耗HTTP服務(wù)器架構(gòu),通過(guò)RTC(實(shí)時(shí)時(shí)鐘)喚醒機(jī)制實(shí)...

關(guān)鍵字: C語(yǔ)言 HTTP

在C語(yǔ)言中,結(jié)構(gòu)體的內(nèi)存布局通常由編譯器根據(jù)數(shù)據(jù)類(lèi)型的自然對(duì)齊規(guī)則自動(dòng)優(yōu)化,以確保CPU能高效訪(fǎng)問(wèn)內(nèi)存。然而,這種默認(rèn)對(duì)齊方式可能導(dǎo)致內(nèi)存浪費(fèi),尤其在嵌入式系統(tǒng)、網(wǎng)絡(luò)協(xié)議或硬件寄存器映射等場(chǎng)景中,開(kāi)發(fā)者常需手動(dòng)控制對(duì)齊以...

關(guān)鍵字: #pragma pack C語(yǔ)言

在嵌入式Linux開(kāi)發(fā)中,快速獲取系統(tǒng)狀態(tài)信息是調(diào)試和監(jiān)控的關(guān)鍵能力。本文整理了7個(gè)高頻使用的C語(yǔ)言代碼片段,涵蓋內(nèi)存、CPU溫度、文件操作等核心場(chǎng)景,幫助開(kāi)發(fā)者高效實(shí)現(xiàn)系統(tǒng)狀態(tài)采集。

關(guān)鍵字: 嵌入式Linux C語(yǔ)言
關(guān)閉