我們擅長商業(yè)策略與用戶體驗(yàn)的完美結(jié)合。
歡迎瀏覽我們的案例。
時(shí)隔六個(gè)月,9 月 20 日,Java 19 如期而至,這一版本是自 Oracle 宣布 Java 以六個(gè)月為一周期發(fā)布的第十個(gè)版本。不過值得注意的是,JDK 19 是標(biāo)準(zhǔn)的非 LTS(長期支持)版本。
話不多說,我們先來一起看一下最新版本的 Java 帶來了哪些更新?
Java 19 的七大亮點(diǎn)更新
根據(jù)官方發(fā)布的公告顯示,Java 19 版本帶來了七大主要功能更新,包括結(jié)構(gòu)化并發(fā)、記錄模式、外部函數(shù)和內(nèi)存 API 的預(yù)覽,以及對開源的 Linux/RISC-V 指令集架構(gòu)(ISA)的支持。除了 Linux/RISC-V 功能,所有的功能都處于預(yù)覽或孵化階段。
具體來看:
結(jié)構(gòu)化并發(fā)。當(dāng)前還處于孵化階段,旨在通過結(jié)構(gòu)化并發(fā) API 簡化多線程編程。這種并發(fā)性將不同線程中運(yùn)行的多個(gè)任務(wù)視為單個(gè)工作單元,從而簡化錯(cuò)誤處理、提高可靠性和可觀察性。這個(gè)功能來自 Project Loom,它引入了一個(gè)新的輕量級并發(fā)模型。
記錄模式,這一功能目前也處于預(yù)覽版,主要是用來解構(gòu)記錄值。記錄模式和類型模式可以被嵌套,以實(shí)現(xiàn)強(qiáng)大的、具有聲明性的和可組合的數(shù)據(jù)導(dǎo)航和處理形式。該提案的目標(biāo)包括擴(kuò)展模式匹配,用以表達(dá)更復(fù)雜的、可組合的數(shù)據(jù)查詢,同時(shí)不改變類型模式的語法或語義。該提案建立在 2021 年 3 月在 JDK 16 中交付的模式匹配的基礎(chǔ)上。未來,Oracle 可能會要求對記錄模式進(jìn)行擴(kuò)展,使之具備數(shù)組模式、Vararg 模式。記錄模式是 Project Amber 的一部分,該項(xiàng)目旨在探索和孵化較小的、面向生產(chǎn)力的 Java 功能。
外部函數(shù)和內(nèi)存 API 的預(yù)覽版。通過引入一個(gè) API,Java 程序可以與 Java 運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作。通過有效地調(diào)用外部函數(shù)(即 JVM 之外的代碼)和安全地訪問外部內(nèi)存(即不由 JVM 管理的內(nèi)存),該 API 使 Java 程序能夠調(diào)用本地庫并處理本機(jī)數(shù)據(jù),而不會出現(xiàn) Java 本地接口(JNI)的危險(xiǎn)和脆弱。外部函數(shù)和內(nèi)存 API 結(jié)合了兩個(gè)早期的孵化 API:外部內(nèi)存訪問 API 和外部鏈接器 API。外部函數(shù)和內(nèi)存 API 曾在 JDK 17 中孵化,而后在 JDK 18 中重新孵化。該提案的目標(biāo)包括易用性、性能、通用性和安全性。
虛擬線程的預(yù)覽版。這是一種輕量級的線程,大大減少了編寫、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用的工作量??梢砸院唵蔚?thread-per-request 風(fēng)格編寫的服務(wù)器應(yīng)用程序能夠以接近最佳的硬件利用率進(jìn)行擴(kuò)展,通過使用 java.lang Thread API 現(xiàn)有代碼能夠以最小的改動采用虛擬線程,并基于現(xiàn)有的 JDK 工具對虛擬線程進(jìn)行故障診斷、調(diào)試和分析。本提案的目標(biāo)不是要改變 Java 的基本并發(fā)模型,也不是要在 Java 語言或 Java 庫中提供新的數(shù)據(jù)并行結(jié)構(gòu)。它的目標(biāo)也不是去除線程的傳統(tǒng)實(shí)現(xiàn),或默默地將現(xiàn)有的應(yīng)用程序遷移到使用虛擬線程。這項(xiàng)功能也是 Project Loom 的一部分。
對 switch 表達(dá)式和語句的模式匹配進(jìn)行了第三次預(yù)覽。這項(xiàng)功能以前在 JDK 17、JDK 18 中進(jìn)行過預(yù)覽。這一次在 JDK 19 中將進(jìn)一步細(xì)化功能,包括用 switch 塊中的 when 子句替換受保護(hù)的模式。另外,當(dāng)選擇器表達(dá)式的值為 null 時(shí),模式切換的運(yùn)行時(shí)語義與傳統(tǒng)的語義更加一致。這項(xiàng)功能也是 Amber 項(xiàng)目的一部分。
Vector API 的第四次孵化,將表達(dá)向量計(jì)算,在運(yùn)行時(shí)可靠地編譯為支持的 CPU 架構(gòu)上的最佳向量指令,從而實(shí)現(xiàn)優(yōu)于等效標(biāo)量計(jì)算的性能。該 API 的開發(fā)者使用 HotSpot 自動矢量器,可獲得了一種在 Java 中編寫復(fù)雜的向量算法的方法,但有一個(gè)用戶模型,使向量化更可預(yù)測和穩(wěn)健。Vector API 先前已被納入 JDK 16、JDK 17 和 JDK 19。在最新的 JDK 19 中,官方為該功能增加了兩個(gè)跨道向量操作,即壓縮和擴(kuò)展,以及一個(gè)互補(bǔ)的向量掩碼壓縮操作。壓縮向量操作將由掩碼選擇的源向量的通道按通道順序映射到目標(biāo)向量,而擴(kuò)展操作則做相反的操作。壓縮操作在過濾查詢結(jié)果時(shí)非常有用。
通過 Linux/RISC-V 移植,目前這一功能已正式可用。Java 將獲得對硬件指令集的支持,該指令集已經(jīng)被廣泛的語言工具鏈所支持。RISC-V 實(shí)際上是一系列相關(guān)的 ISA。Linux/RISC-V 端口將只支持 RISC-V 的 RV64GV 配置,這是一個(gè)包括矢量指令的通用 64 位 ISA。Java 的開發(fā)者可能會在將來考慮其他 RISC-V 的配置。
除了以上功能更新之外,甲骨文公司 Java 平臺開發(fā)高級副總裁、OpenJDK 管理委員會主席 Georges Saab 表示,最新的 Java 版本還修復(fù)了一千多處錯(cuò)誤,提高了語言的穩(wěn)定性和性能。不過,Saab 稱,Java 客戶經(jīng)常推遲升級,因?yàn)樗麄兛戳斯δ芰斜?,沒有看到他們明顯需要的東西。但他敦促 Java 開發(fā)者跟上程序," 因?yàn)橐磺卸紩兊酶?"。
Java 有望在三年內(nèi)成為最頻繁使用的編程語言平臺
事實(shí)上,近幾年間,在 Python 火速升溫之下,關(guān)于 Java 大廈將倒、步入下坡路等言論不絕于耳,很多人認(rèn)為 Java 的使用率已大不如以前。
不過,在這邊發(fā)布 Java 19 之際,Oracle 也在官方博客上發(fā)布了一篇《Java is #1 choice for cloud according to VDC Research》的文章,似乎在為 Java " 站臺 ",其中引用了咨詢公司 VDC Research 的一份關(guān)于 Java 在企業(yè)中使用和重要性的研究報(bào)告。
該研究報(bào)告考察了當(dāng)今主流的 20 多種頂級編程語言,發(fā)現(xiàn) Java 仍然是頂級技術(shù)趨勢中排名第一的語言,也是開發(fā)者信任的解決安全問題的最高評級語言。
這份報(bào)告數(shù)據(jù)顯示,企業(yè)在不使用 Java 的項(xiàng)目通常比使用 Java 的項(xiàng)目要多花費(fèi) 22% 的成本。
同時(shí),Java 有望在三年內(nèi)成為最頻繁使用的編程語言平臺,超過 JavaScript、C++ 和 Python 等。云開發(fā)人員將 Java 列為對其組織運(yùn)營最重要的語言。這對于涉及在云端開發(fā)或部署的項(xiàng)目來說是真實(shí)的。
這份報(bào)告指出,多年來,Java 在云計(jì)算生態(tài)系統(tǒng)中的地位一直在提高,基于云計(jì)算的 JVM 現(xiàn)在正處于每年增長 12.5% 的軌道上,到 2025 年將達(dá)到 820 億的活躍安裝基數(shù)。
毋庸置疑,在企業(yè)級應(yīng)用以及云生態(tài)系統(tǒng)中,至今還未有一種語言能夠超越 Java。然而,Oracle 內(nèi)部對 Java 更新頻率的加快,讓不少開發(fā)者報(bào)以 " 你更新任你更新,我就不用 " 的態(tài)度,也讓很多人成為 Java 8、Java 11 等老版本的 " 釘子戶 "。
對于這一點(diǎn),據(jù)外媒 The Register 報(bào)道,Saab 在采訪時(shí)也表示 Oracle 關(guān)注到了這一點(diǎn)," 自從我們轉(zhuǎn)向這種模式以來,沒有任何延遲,你可能知道,我們以前的模式并非總是如此。在過去,用戶往往需要等待相當(dāng)長的時(shí)間才能得到 Java 中的任何新東西,然后他們會一下子得到太多的東西。
我們確實(shí)意識到,并不是每個(gè)人都想每六個(gè)月重新發(fā)布一次。因此,我們所做的一件重要的事情是為長期支持提供 Java SE 訂閱服務(wù),基本上使那些希望保持在一個(gè)版本上并每季度得到更新以保持其安全性的企業(yè)(可以這樣做)。"
你是否會升級到最新版本的 Java?
每年在 Java 最新版本到來之際,也有不少人陷入了 " 升級 or 不升級 " 的糾結(jié)中。根據(jù)知名科技公司 New Relic 之前發(fā)布的《Java 生態(tài)系統(tǒng)狀況報(bào)告》顯示,2018 年 9 月發(fā)布的 Java 11 是目前最受歡迎的 Java 版本(48%),其次是 2014 年 3 月發(fā)布的 Java 8(46%),兩者都是長期支持(LTS)版本。
每個(gè) Java LTS 版本的使用百分比
最新的一個(gè)長期版本 Java 17 排名還不是很高,但它在發(fā)布后的幾個(gè)月里,已經(jīng)超過了 Java 6、Java 10 和 Java 16 版本的占比。
此前,Oracle 還提議將 JDK LTS 的發(fā)布周期從每三年一次改為每兩年一次。如果該提案被接受,這意味著 JDK 17 之后的下一個(gè) JDK LTS 版本將是 JDK 21,而不是 JDK 23。
因此,相較非 LTS 版本,LTS 版本帶來的穩(wěn)定支持更受 Java 開發(fā)者歡迎一些,那么,你當(dāng)前正在使用哪個(gè)版本的 Java 呢?這一次 Java 19 發(fā)布,你會去嘗鮮嗎?
?。?a href="http://www.yibianchina.com/wechat/">邯鄲小程序開發(fā))
Java19如期而至 該版本是自O(shè)racle宣布Java以六個(gè)月為一周期發(fā)布的第十個(gè)版本 09:18:08
工信部稱截至8月 5G基站總數(shù)達(dá)210.2萬個(gè) 14:47:51
以色列通信部長表示考慮關(guān)閉銅線網(wǎng)絡(luò) 轉(zhuǎn)移到更新的光纖基礎(chǔ)設(shè)施上 14:36:10
英偉達(dá)公布新一代“DRIVE Thor”計(jì)算平臺 致力于自動駕駛等數(shù)字功能 14:33:09
任天堂表示 10月下旬用戶不能再通過Facebook、推特進(jìn)行賬戶登錄 14:30:25
美國加州清潔空氣監(jiān)管機(jī)構(gòu)表示 2035年停止純汽油新車銷售是最佳時(shí)機(jī) 14:27:30