我們擅長商業(yè)策略與用戶體驗的完美結(jié)合。
歡迎瀏覽我們的案例。
時隔六個月,9 月 20 日,Java 19 如期而至,這一版本是自 Oracle 宣布 Java 以六個月為一周期發(fā)布的第十個版本。不過值得注意的是,JDK 19 是標準的非 LTS(長期支持)版本。
話不多說,我們先來一起看一下最新版本的 Java 帶來了哪些更新?
Java 19 的七大亮點更新
根據(jù)官方發(fā)布的公告顯示,Java 19 版本帶來了七大主要功能更新,包括結(jié)構(gòu)化并發(fā)、記錄模式、外部函數(shù)和內(nèi)存 API 的預覽,以及對開源的 Linux/RISC-V 指令集架構(gòu)(ISA)的支持。除了 Linux/RISC-V 功能,所有的功能都處于預覽或孵化階段。
具體來看:
結(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 的配置。
除了以上功能更新之外,甲骨文公司 Java 平臺開發(fā)高級副總裁、OpenJDK 管理委員會主席 Georges Saab 表示,最新的 Java 版本還修復了一千多處錯誤,提高了語言的穩(wěn)定性和性能。不過,Saab 稱,Java 客戶經(jīng)常推遲升級,因為他們看了功能列表,沒有看到他們明顯需要的東西。但他敦促 Java 開發(fā)者跟上程序," 因為一切都會變得更好 "。
Java 有望在三年內(nèi)成為最頻繁使用的編程語言平臺
事實上,近幾年間,在 Python 火速升溫之下,關于 Java 大廈將倒、步入下坡路等言論不絕于耳,很多人認為 Java 的使用率已大不如以前。
不過,在這邊發(fā)布 Java 19 之際,Oracle 也在官方博客上發(fā)布了一篇《Java is #1 choice for cloud according to VDC Research》的文章,似乎在為 Java " 站臺 ",其中引用了咨詢公司 VDC Research 的一份關于 Java 在企業(yè)中使用和重要性的研究報告。
該研究報告考察了當今主流的 20 多種頂級編程語言,發(fā)現(xiàn) Java 仍然是頂級技術趨勢中排名第一的語言,也是開發(fā)者信任的解決安全問題的最高評級語言。
這份報告數(shù)據(jù)顯示,企業(yè)在不使用 Java 的項目通常比使用 Java 的項目要多花費 22% 的成本。
同時,Java 有望在三年內(nèi)成為最頻繁使用的編程語言平臺,超過 JavaScript、C++ 和 Python 等。云開發(fā)人員將 Java 列為對其組織運營最重要的語言。這對于涉及在云端開發(fā)或部署的項目來說是真實的。
這份報告指出,多年來,Java 在云計算生態(tài)系統(tǒng)中的地位一直在提高,基于云計算的 JVM 現(xiàn)在正處于每年增長 12.5% 的軌道上,到 2025 年將達到 820 億的活躍安裝基數(shù)。
毋庸置疑,在企業(yè)級應用以及云生態(tài)系統(tǒng)中,至今還未有一種語言能夠超越 Java。然而,Oracle 內(nèi)部對 Java 更新頻率的加快,讓不少開發(fā)者報以 " 你更新任你更新,我就不用 " 的態(tài)度,也讓很多人成為 Java 8、Java 11 等老版本的 " 釘子戶 "。
對于這一點,據(jù)外媒 The Register 報道,Saab 在采訪時也表示 Oracle 關注到了這一點," 自從我們轉(zhuǎn)向這種模式以來,沒有任何延遲,你可能知道,我們以前的模式并非總是如此。在過去,用戶往往需要等待相當長的時間才能得到 Java 中的任何新東西,然后他們會一下子得到太多的東西。
我們確實意識到,并不是每個人都想每六個月重新發(fā)布一次。因此,我們所做的一件重要的事情是為長期支持提供 Java SE 訂閱服務,基本上使那些希望保持在一個版本上并每季度得到更新以保持其安全性的企業(yè)(可以這樣做)。"
你是否會升級到最新版本的 Java?
每年在 Java 最新版本到來之際,也有不少人陷入了 " 升級 or 不升級 " 的糾結(jié)中。根據(jù)知名科技公司 New Relic 之前發(fā)布的《Java 生態(tài)系統(tǒng)狀況報告》顯示,2018 年 9 月發(fā)布的 Java 11 是目前最受歡迎的 Java 版本(48%),其次是 2014 年 3 月發(fā)布的 Java 8(46%),兩者都是長期支持(LTS)版本。
每個 Java LTS 版本的使用百分比
最新的一個長期版本 Java 17 排名還不是很高,但它在發(fā)布后的幾個月里,已經(jīng)超過了 Java 6、Java 10 和 Java 16 版本的占比。
此前,Oracle 還提議將 JDK LTS 的發(fā)布周期從每三年一次改為每兩年一次。如果該提案被接受,這意味著 JDK 17 之后的下一個 JDK LTS 版本將是 JDK 21,而不是 JDK 23。
因此,相較非 LTS 版本,LTS 版本帶來的穩(wěn)定支持更受 Java 開發(fā)者歡迎一些,那么,你當前正在使用哪個版本的 Java 呢?這一次 Java 19 發(fā)布,你會去嘗鮮嗎?
(邯鄲小程序開發(fā))
Java19如期而至 該版本是自Oracle宣布Java以六個月為一周期發(fā)布的第十個版本 09:18:08
工信部稱截至8月 5G基站總數(shù)達210.2萬個 14:47:51
以色列通信部長表示考慮關閉銅線網(wǎng)絡 轉(zhuǎn)移到更新的光纖基礎設施上 14:36:10
英偉達公布新一代“DRIVE Thor”計算平臺 致力于自動駕駛等數(shù)字功能 14:33:09
任天堂表示 10月下旬用戶不能再通過Facebook、推特進行賬戶登錄 14:30:25
美國加州清潔空氣監(jiān)管機構(gòu)表示 2035年停止純汽油新車銷售是最佳時機 14:27:30