欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:開發(fā)語言 Java

柚子快報邀請碼778899分享:開發(fā)語言 Java

http://yzkb.51969.com/

Java_JDK8到JDK21各版本發(fā)行時間及重要特性

背景JDK8新特性(2014年3月)JDK9新特性(2017年9月)JDK10新特性(2018年3月)JDK11新特性(2018年9月)(LTS版本)JDK12新特性(2019年3月)JDK13新特性(2019年9月)JDK14新特性(2020年3月)JDK15新特性(2020年9月)JDK16新特性(2021年3月)JDK17新特性(2021年9月)(LTS版本)JDK18新特性(2022年3月)JDK19新特性(2022年10月)JDK20新特性(2023年3月)JDK21新特性(2023年9月)(LTS版本)

背景

2022年Spring6和SpringBoot3相繼推出,在此之前,Java社區(qū)一直是"新版任你發(fā),我用Java 8",不管新版本怎么出,很少有人愿意升級。 這一次,Spring 直接來了個大招,SpringBoot3和Spring6的最低依賴就是JDK17!跨過 JDK 8-16,直接升級到 JDK 17。那么為什么是 JDK 17呢?

為什么是JDK17這么多新版本的 JDK,而且2022年還會推出 JDK 18 和 JDK 19,為什么 Spring 選擇了 JDK 17呢。

主要是因為他是一個 Oracle官宣可以免費商用的LTS版本,所謂 LTS,是 Long Term Support,也就是官方保證會長期支持的版本。

JDK 17 最多可以支持到 2029 年 9 月份。按照技術(shù)更新迭代的速度,這次免費商用 8 年可謂是良苦用心,為的就是讓使用者放心大膽地將 JDK 升級到 JDK 17(不過JDK 8 支持的時間更長,可以延長到 2030 年 12 月,JDK8可謂是YYDS!)

從 JDK 誕生到現(xiàn)在,還在長期支持的版本主要有 JDK 7、JDK 8 、JDK 11以及 JDK 1,JDK 17 將是繼 Java 8 以來最重要的LTS版本,是 Java 社區(qū)八年努力的成果。

一直以來,Java8 都是 Java 社區(qū)心頭的痛,Java8提供了很多特性,比如Lambda 表達式、Optional 類,加上Java8超長的支持時間,都導致了JDK8的使用至今。它代表著以穩(wěn)定性為主的企業(yè)管理層與擁抱變化為主的程序猿之間的拉鋸戰(zhàn)。不升!成為各大廠心照不宣的選擇?,F(xiàn)在,這種平衡或?qū)⒋蚱?。因?Java 屆的霸主框架 SpringBoot,選擇了最小支持的 Java lts 版本,就是最新的 Java17。

那么接下來,讓我們看看,從JDK8到JDK21有哪些新特性?

JDK8新特性(2014年3月)

Lambda表達式新的日期API引入Optional使用Base64接口的默認方法和靜態(tài)方法新增方法引用格式新增Stream類注解相關的改變支持并行(parallel)數(shù)組對并發(fā)類(Concurrency)的擴展。

Java的發(fā)展歷史 ? Java 8 (又稱為 jdk 1.8) 是 Java 語言開發(fā)的一個主要版本。Java8 商用收費從2019年1月份開始,Oracle JDK開始對JavaSE 8 之后的版本開始進行商用收費,確切的說是 8u201/202 之后的版本。

JDK9新特性(2017年9月)

模塊化提供了List.of()、Set.of()、Map.of()和Map.ofEntries()等工廠方法接口支持私有方法Optional 類改進多版本兼容Jar包JShell工具try-with-resources的改進Stream API的改進設置G1為JVM默認垃圾收集器支持http2.0和websocket的API

重要特性:主要是API的優(yōu)化,如支持HTTP2的Client API、JVM采用G1為默認垃圾收集器。

JDK10新特性(2018年3月)

局部變量類型推斷,類似JS可以通過var來修飾局部變量,編譯之后會推斷出值的真實類型不可變集合的改進并行全垃圾回收器 G1,來優(yōu)化G1的延遲線程本地握手,允許在不執(zhí)行全局VM安全點的情況下執(zhí)行線程回調(diào),可以停止單個線程,而不需要停止所有線程或不停止線程Optional新增orElseThrow()方法類數(shù)據(jù)共享Unicode 語言標簽擴展根證書

重要特性:通過var關鍵字實現(xiàn)局部變量類型推斷,使Java語言變成弱類型語言、JVM的G1垃圾回收由單線程改成多線程并行處理,降低G1的停頓時間。

JDK11新特性(2018年9月)(LTS版本)

增加一些字符串處理方法用于 Lambda 參數(shù)的局部變量語法Http Client重寫,支持HTTP/1.1和HTTP/2 ,也支持 websockets可運行單一Java源碼文件,如:java Test.javaZGC:可伸縮低延遲垃圾收集器,ZGC可以看做是G1之上更細粒度的內(nèi)存管理策略。由于內(nèi)存的不斷分配回收會產(chǎn)生大量的內(nèi)存碎片空間,因此需要整理策略防止內(nèi)存空間碎片化,在整理期間需要將對于內(nèi)存引用的線程邏輯暫停,這個過程被稱為"Stop the world"。只有當整理完成后,線程邏輯才可以繼續(xù)運行。(并行回收)支持 TLS 1.3 協(xié)議Flight Recorder(飛行記錄器),基于OS、JVM和JDK的事件產(chǎn)生的數(shù)據(jù)收集框架對Stream、Optional、集合API進行增強

重要特性:對于JDK9和JDK10的完善,主要是對于Stream、集合等API的增強、新增ZGC垃圾收集器。

JDK12新特性(2019年3月)

Switch 表達式擴展,可以有返回值新增NumberFormat對復雜數(shù)字的格式化字符串支持transform、indent操作新增方法Files.mismatch(Path, Path)Teeing Collector支持unicode 11Shenandoah GC,新增的GC算法G1收集器的優(yōu)化,將GC的垃圾分為強制部分和可選部分,強制部分會被回收,可選部分可能不會被回收,提高GC的效率

重要特性:switch表達式語法擴展、G1收集器優(yōu)化、新增Shenandoah GC垃圾回收算法。

JDK13新特性(2019年9月)

Switch 表達式擴展,switch表達式增加yield關鍵字用于返回結(jié)果,作用類似于return,如果沒有返回結(jié)果則使用break文本塊升級 “”" ,引入了文本塊,可以使用"""三個雙引號表示文本塊,文本塊內(nèi)部就不需要使用換行的轉(zhuǎn)義字符SocketAPI 重構(gòu),Socket的底層實現(xiàn)優(yōu)化,引入了NIOFileSystems.newFileSystem新方法ZGC優(yōu)化,增強 ZGC 釋放未使用內(nèi)存,將標記長時間空閑的堆內(nèi)存空間返還給操作系統(tǒng),保證堆大小不會小于配置的最小堆內(nèi)存大小,如果堆最大和最小內(nèi)存大小設置一樣,則不會釋放內(nèi)存還給操作系統(tǒng)

重要特性:ZGC優(yōu)化,釋放內(nèi)存還給操作系統(tǒng)、socket底層實現(xiàn)引入NIO。

JDK14新特性(2020年3月)

instanceof模式匹配,instanceof類型匹配語法簡化,可以直接給對象賦值,如if(obj instanceof String str),如果obj是字符串類型則直接賦值給了str變量 引入Record類型,類似于Lombok 的@Data注解,可以向Lombok一樣自動生成構(gòu)造器、equals、getter等方法; Switch 表達式-標準化改進 NullPointerExceptions提示信息,打印具體哪個方法拋的空指針異常,避免同一行代碼多個函數(shù)調(diào)用時無法判斷具體是哪個函數(shù)拋異常的困擾,方便異常排查;刪除 CMS 垃圾回收器

JDK15新特性(2020年9月)

EdDSA 數(shù)字簽名算法Sealed Classes(封閉類,預覽),通過sealed關鍵字修飾抽象類限定只允許指定的子類才可以實現(xiàn)或繼承抽象類,避免抽象類被濫用Hidden Classes(隱藏類)移除 Nashorn JavaScript引擎改進java.net.DatagramSocket 和 java.net.MulticastSocket底層實現(xiàn)

JDK16新特性(2021年3月)

允許在 JDK C ++源代碼中使用 C ++ 14功能ZGC性能優(yōu)化,去掉ZGC線程堆棧處理從安全點到并發(fā)階段增加 Unix 域套接字通道彈性元空間能力提供用于打包獨立 Java 應用程序的 jpackage 工具JDK16相當于是將JDK14、JDK15的一些特性進行了正式引入,如instanceof模式匹配(Pattern matching)、record的引入等最終到JDK16變成了final版本。

JDK17新特性(2021年9月)(LTS版本)

Free Java License 根據(jù)Oracle官方發(fā)布的最新Free Java License,Oracle JDK 可以免費用于生產(chǎn)環(huán)境。JDK 17 將取代 JDK 11 成為下一個長期支持版本Spring 6 和 Spring Boot 3需要JDK17移除實驗性的 AOT 和 JIT 編譯器恢復始終執(zhí)行嚴格模式 (Always-Strict) 的浮點定義正式引入密封類sealed class,限制抽象類的實現(xiàn)統(tǒng)一日志異步刷新,先將日志寫入緩存,然后再異步刷新雖然JDK17也是一個LTS版本,但是并沒有像JDK8和JDK11一樣引入比較突出的特性,主要是對前幾個版本的整合和完善。

JDK18新特性(2022年3月)

指定 UTF-8 作為標準 Java API 的默認字符集。通過此更改,依賴于默認字符集的 API 將在所有實現(xiàn)、操作系統(tǒng)、區(qū)域設置和配置中保持一致。引入一個簡單的 Web 服務器。提供一個命令行工具,來啟動一個只提供靜態(tài)文件的最小網(wǎng)絡服務器,它沒有 CGI 或類似 servlet 的功能可用。該工具用于原型設計、臨時編碼和測試目的,尤其是在教學環(huán)境中。支持在 Java API 文檔中加入代碼片段。為 JavaDoc 的 Standard Doclet 引入一個 @snippet 標記,以簡化 API 文檔中嵌入示例源代碼的難度。用方法句柄重新實現(xiàn)核心反射。在 java.lang.invoke 的方法句柄之上,重構(gòu) java.lang.reflect 的方法、構(gòu)造函數(shù)和字段,使用方法句柄處理反射的底層機制將減少 java.lang.reflect 和 java.lang.invoke 兩者的 API 維護和開發(fā)成本。Vector API(第三孵化器)。引入一個 API 來表達向量計算,這些計算在運行時可以編譯為支持的 CPU 架構(gòu)上的最佳向量指令,從而實現(xiàn)優(yōu)于等效標量計算的性能?;ヂ?lián)網(wǎng)地址解析 SPI。定義用于主機名和地址解析的服務提供者接口 (SPI),以便java.net.InetAddress可以使用平臺內(nèi)置解析器以外的解析器。外部函數(shù)和內(nèi)存 API(第二孵化器)。引入了一個新 API, Java 程序可以通過它與 Java 運行時之外的代碼和數(shù)據(jù)進行互操作。通過有效地調(diào)用外部函數(shù)(即 JVM 外的代碼),并安全地訪問外部內(nèi)存(即不由 JVM 管理的內(nèi)存),外部函數(shù)和內(nèi)存 API 使 Java 程序能夠調(diào)用本機庫并處理本機數(shù)據(jù),而不具有 JNI 的脆弱性和危險。switch 模式匹配表達式。使用 switch 表達式和語句的模式匹配以及對模式語言的擴展來增強 Java 編程語言。將模式匹配擴展到 switch 允許針對多個模式測試表達式,每個模式都有特定的操作,可以簡潔安全地表達復雜的面向數(shù)據(jù)的查詢。棄用 Finalization 功能。Java 1.0 中引入的 Finalization 旨在幫助避免資源泄漏問題,然而這個功能存在延遲不可預測、行為不受約束,以及線程無法指定等缺陷,導致其安全性、性能、可靠性和可維護性方面都存在問題,因此將其棄用,用戶可選擇遷移到其他資源管理技術(shù),例如try-with-resources 語句和清潔器。

重點是使語言更加直觀和易于訪問,鼓勵所有技能水平的程序員使用 Java。新版本肯定是一次重大更新,具有簡單的 Web 服務器、模式匹配改進和默認 UTF-8 等新功能。此外,隨著 Java API 文檔中的代碼片段和互聯(lián)網(wǎng)地址解析 SPI 等變化,重點更多地放在改善新手和專家等用戶體驗上。

JDK19新特性(2022年10月)

結(jié)構(gòu)化并發(fā)。當前還處于孵化階段,旨在通過結(jié)構(gòu)化并發(fā) API 簡化多線程編程。這種并發(fā)性將不同線程中運行的多個任務視為單個工作單元,從而簡化錯誤處理、提高可靠性和可觀察性。這個功能來自 Project Loom,它引入了一個新的輕量級并發(fā)模型。記錄模式,這一功能目前也處于預覽版,主要是用來解構(gòu)記錄值。記錄模式和類型模式可以被嵌套,以實現(xiàn)強大的、具有聲明性的和可組合的數(shù)據(jù)導航和處理形式。該提案的目標包括擴展模式匹配,用以表達更復雜的、可組合的數(shù)據(jù)查詢,同時不改變類型模式的語法或語義。該提案建立在 2021 年 3 月在 JDK 16 中交付的模式匹配的基礎上。未來,Oracle 可能會要求對記錄模式進行擴展,使之具備數(shù)組模式、Vararg 模式。記錄模式是 Project Amber 的一部分,該項目旨在探索和孵化較小的、面向生產(chǎn)力的 Java 功能。外部函數(shù)和內(nèi)存 API 的預覽版。通過引入一個 API,Java 程序可以與 Java 運行時之外的代碼和數(shù)據(jù)進行互操作。通過有效地調(diào)用外部函數(shù)(即 JVM 之外的代碼)和安全地訪問外部內(nèi)存(即不由 JVM 管理的內(nèi)存),該 API 使 Java 程序能夠調(diào)用本地庫并處理本機數(shù)據(jù),而不會出現(xiàn) Java 本地接口(JNI)的危險和脆弱。外部函數(shù)和內(nèi)存 API 結(jié)合了兩個早期的孵化 API:外部內(nèi)存訪問 API 和外部鏈接器 API。外部函數(shù)和內(nèi)存 API 曾在 JDK 17 中孵化,而后在 JDK 18 中重新孵化。該提案的目標包括易用性、性能、通用性和安全性。虛擬線程的預覽版。這是一種輕量級的線程,大大減少了編寫、維護和觀察高吞吐量并發(fā)應用的工作量??梢砸院唵蔚?thread-per-request 風格編寫的服務器應用程序能夠以接近最佳的硬件利用率進行擴展,通過使用 java.lang Thread API 現(xiàn)有代碼能夠以最小的改動采用虛擬線程,并基于現(xiàn)有的 JDK 工具對虛擬線程進行故障診斷、調(diào)試和分析。本提案的目標不是要改變 Java 的基本并發(fā)模型,也不是要在 Java 語言或 Java 庫中提供新的數(shù)據(jù)并行結(jié)構(gòu)。它的目標也不是去除線程的傳統(tǒng)實現(xiàn),或默默地將現(xiàn)有的應用程序遷移到使用虛擬線程。這項功能也是 Project Loom 的一部分。對 switch 表達式和語句的模式匹配進行了第三次預覽。這項功能以前在 JDK 17、JDK 18 中進行過預覽。這一次在 JDK 19 中將進一步細化功能,包括用 switch 塊中的 when 子句替換受保護的模式。另外,當選擇器表達式的值為 null 時,模式切換的運行時語義與傳統(tǒng)的語義更加一致。這項功能也是 Amber 項目的一部分。Vector API 的第四次孵化,將表達向量計算,在運行時可靠地編譯為支持的 CPU 架構(gòu)上的最佳向量指令,從而實現(xiàn)優(yōu)于等效標量計算的性能。該 API 的開發(fā)者使用 HotSpot 自動矢量器,可獲得了一種在 Java 中編寫復雜的向量算法的方法,但有一個用戶模型,使向量化更可預測和穩(wěn)健。Vector API 先前已被納入 JDK 16、JDK 17 和 JDK 19。在最新的 JDK 19 中,官方為該功能增加了兩個跨道向量操作,即壓縮和擴展,以及一個互補的向量掩碼壓縮操作。壓縮向量操作將由掩碼選擇的源向量的通道按通道順序映射到目標向量,而擴展操作則做相反的操作。壓縮操作在過濾查詢結(jié)果時非常有用。通過 Linux/RISC-V 移植,目前這一功能已正式可用。Java 將獲得對硬件指令集的支持,該指令集已經(jīng)被廣泛的語言工具鏈所支持。RISC-V 實際上是一系列相關的 ISA。Linux/RISC-V 端口將只支持 RISC-V 的 RV64GV 配置,這是一個包括矢量指令的通用 64 位 ISA。Java 的開發(fā)者可能會在將來考慮其他 RISC-V 的配置。

根據(jù)官方發(fā)布的公告顯示,Java 19 版本帶來了七大主要功能更新,包括結(jié)構(gòu)化并發(fā)、記錄模式、外部函數(shù)和內(nèi)存 API 的預覽,以及對開源的 Linux/RISC-V 指令集架構(gòu)(ISA)的支持。除了 Linux/RISC-V 功能,所有的功能都處于預覽或孵化階段。

JDK20新特性(2023年3月)

作用域值(孵化器)Record 模式匹配(第二次預覽)switch 的模式匹配(第四次預覽)外部函數(shù)和內(nèi)存 API(第二個預覽版)虛擬線程(第二個預覽版)結(jié)構(gòu)化并發(fā)(第二孵化器)Vector API(第五孵化器)

Java 20 共帶來 7 個新特性功能,其中三個是孵化提案,孵化也就是說尚在征求意見階段,未來可能會刪除此功能。

JDK21新特性(2023年9月)(LTS版本)

序列集合。該 JEP 提議引入“一個新的接口族,用于表示集合的概念,這些集合的元素按照預定義的序列或順序排列,它們是作為集合的結(jié)構(gòu)屬性?!边@一提案的動機是由于集合框架中缺乏預定義的順序和統(tǒng)一的操作集。分代 ZGC。通過擴展Z垃圾回收器(ZGC)來維護年輕對象和年老對象的獨立生成,從而提高應用程序性能。這將使ZGC能夠更頻繁地收集年輕對象——這些對象往往英年早逝。記錄模式。使用記錄模式(Record Patterns)增強Java編程語言,以解構(gòu)記錄值??梢郧短子涗浤J胶皖愋湍J?,以實現(xiàn)功能強大、聲明性和可組合形式的數(shù)據(jù)導航和處理。switch 模式匹配。通過switch表達式和語句的模式匹配來增強Java編程語言。通過將模式匹配擴展到switch,可以針對多個模式測試表達式,每個模式都有一個特定的操作,從而可以簡潔、安全地表達復雜的面向數(shù)據(jù)的查詢。虛擬線程。將虛擬線程(Virtual Threads)引入Java平臺。虛擬線程是輕量級線程,可以顯著減少編寫、維護和觀察高吞吐量并發(fā)應用程序的工作量。棄用Windows 32位x86移植,并打算在將來的版本中將其刪除。準備禁止動態(tài)加載代理。將代理動態(tài)加載到正在運行的JVM中時發(fā)出警告。這些警告旨在讓用戶為將來的版本做好準備,該版本默認情況下不允許動態(tài)加載代理,以提高默認情況下的完整性。在啟動時加載代理的可服務性工具不會導致在任何版本中發(fā)出警告。密鑰封裝機制 API。介紹一種用于密鑰封裝機制(Key Encapsulation Mechanism,簡稱KEM)的API,這是一種使用公鑰加密來保護對稱密鑰的加密技術(shù)。字符串模板(預覽)。使用字符串模板(String Templates)增強Java編程語言。字符串模板通過將文本與嵌入的表達式和模板處理器耦合來生成專門的結(jié)果,從而補充Java現(xiàn)有的字符串文本和文本塊。這是一個預覽語言功能和API。外部函數(shù)和內(nèi)存 API(第三次預覽)。引入API,Java程序可以通過該API與Java運行時之外的代碼和數(shù)據(jù)進行互操作。通過有效地調(diào)用外部函數(shù)(即JVM外部的代碼),并通過安全地訪問外部內(nèi)存(即不受JVM管理的內(nèi)存),API使Java程序能夠調(diào)用本機庫并處理本機數(shù)據(jù),而不會出現(xiàn)JNI的脆弱性和危險性。這是一個預覽API。未命名模式和變量(預覽)。使用未命名模式和未命名變量來增強Java語言,未命名模式匹配記錄組件而不說明組件的名稱或類型,未命名變量可以初始化但不使用。兩者都用下劃線字符_表示。這是一個預覽語言功能。未命名類和實例主方法(預覽)。發(fā)展Java語言,使學生無需理解為大型程序設計的語言功能即可編寫第一個程序。學生們不用使用單獨的Java方言,就可以為單類程序編寫精簡的聲明,然后隨著技能的發(fā)展,無縫地擴展程序,使用更高級的功能。這是一個預覽語言功能。作用域值(預覽)。引入作用域值,這些值可以在不使用方法參數(shù)的情況下安全有效地共享給方法。它們優(yōu)先于線程化局部變量,尤其是在使用大量虛擬線程時。這是一個預覽API。結(jié)構(gòu)化并發(fā)(預覽)。通過引入用于結(jié)構(gòu)化并發(fā)(Structured Concurrency)的API來簡化并發(fā)編程。結(jié)構(gòu)化并發(fā)將在不同線程中運行的相關任務組視為單個工作單元,從而簡化錯誤處理和消除,提高可靠性,并增強可觀察性。這是一個預覽API。Vector API(孵化器第六階段)

根據(jù)發(fā)布的規(guī)劃,這次發(fā)布的 JDK 21 將是一個長期支持版(LTS 版)。LTS 版每 2 年發(fā)布一個,上一次長期支持版是 21 年 9 月發(fā)布的 JDK 17。

柚子快報邀請碼778899分享:開發(fā)語言 Java

http://yzkb.51969.com/

相關鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19169781.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄