我們擅長(zhǎng)商業(yè)策略與用戶體驗(yàn)的完美結(jié)合。
歡迎瀏覽我們的案例。

甲骨文(Oracle)發(fā)布了 Java 編程語(yǔ)言和虛擬機(jī)的第 18 版。該版本的最終特性主要集中在以下 9 個(gè) JEP 上:
JEP 400:默認(rèn)字符集為 UTF-8
JEP 408:簡(jiǎn)易 Web 服務(wù)器
JEP 413:支持在 Java API 文檔中加入代碼片段
JEP 416:用方法句柄重新實(shí)現(xiàn)核心反射
JEP 417:Vector API(第三個(gè)孵化階段)
JEP 418:網(wǎng)絡(luò)地址解析 SPI
JEP 419:外部函數(shù)&內(nèi)存 API(第二個(gè)孵化階段)
JEP 420:Switch 的模式匹配(第二版預(yù)覽)
JEP 421:棄用 Finalization 以備后繼刪除
Java 18 的特性節(jié)奏略低于之前的版本:Java17 中包含 14 個(gè)特性;Java 16 中包含 17 個(gè)特性;Java 15 中包含 14 個(gè)特性;Java 14 中包含 16 個(gè)特性。
這個(gè)版本的 JEP 特性為 Amber 項(xiàng)目、Loom 項(xiàng)目和 Panama 項(xiàng)目提供了持續(xù)的貢獻(xiàn),并提供了一些有用的新工具。本文介紹其中的一些新特性。
Panama 項(xiàng)目
JEP 417 和 JEP 419 由 Panama 項(xiàng)目贊助,該項(xiàng)目旨在改進(jìn)和豐富 JVM 與定義良好的“外部”(即非 Java)API 之間的互操作性,這些 API 很可能會(huì)包括 C 語(yǔ)言庫(kù)中常用的接口。
除了性能的改進(jìn)之外,JEP 417,Vector API(第三個(gè)孵化階段)還針對(duì)前兩個(gè)孵化階段的反饋進(jìn)行了增強(qiáng):JEP 414,Vector API(第二個(gè)孵化階段)和 JEP 338,Vector API(孵化階段)。JEP 338 作為孵化階段模塊集成在 JDK 16 中,JEP 414 被定義為 JDK 17的最終 JEP 之一。
JEP 419,外部函數(shù)和內(nèi)存 API(第二個(gè)孵化階段)根據(jù) Java 社區(qū)的反饋(JEP 412,外部函數(shù)和內(nèi)存 API(孵化階段),該 JEP 在 JDK 17 中交付)進(jìn)行了改進(jìn)。第二個(gè)孵化階段的變化包括:在內(nèi)存訪問(wèn) var 句柄中支持更多載體,如 boolean 和 MemoryAddress 接口;用于 MemoryAddress 和 MemorySegment 接口的更通用的解引用(dereference)API;更方便獲取下行調(diào)用(downcall)方法句柄的 API,這樣就不再需要傳遞 MemoryType 枚舉了;以及新的用于內(nèi)存段之間復(fù)制 Java 數(shù)組的 API。
Loom 項(xiàng)目
JEP 418 由 Loom 項(xiàng)目贊助,該項(xiàng)目旨在探索、孵化并交付 Java 虛擬機(jī)(JVM)特性和 API,以支持易于使用、高吞吐量的新型輕量級(jí)并發(fā)編程模型。這將通過(guò)虛擬線程、定界延續(xù)(delimited continuations)和尾調(diào)用來(lái)實(shí)現(xiàn)。
JEP 418,網(wǎng)絡(luò)地址解析 SPI,為主機(jī)名和地址解析定義了一個(gè)服務(wù)提供者接口,以便 java.net.InetAddress 可以利用默認(rèn)的內(nèi)置 OpenJDK 解析器以外的解析器。
Amber 項(xiàng)目
JEP 420 由 Amber 項(xiàng)目贊助,該項(xiàng)目旨在探索和孵化更小的 Java 語(yǔ)言特性,以提高生產(chǎn)率。
JEP 420,Switch 的模式匹配(第二版預(yù)覽),允許針對(duì)多個(gè)模式測(cè)試目標(biāo) switch 表達(dá)式,每個(gè)模式都有一個(gè)特定的操作,從而可以簡(jiǎn)潔而安全地表達(dá)復(fù)雜的面向數(shù)據(jù)的查詢。這是繼在 JDK 17 中交付的 JEP 406,Switch 的模式匹配(預(yù)覽版)之后的第二個(gè)預(yù)覽版本。增強(qiáng)功能包括:對(duì)支配性檢查(dominance checking)的改進(jìn),強(qiáng)制在同一類型的受保護(hù)模式之前出現(xiàn)一個(gè)常量的 case 標(biāo)簽;與密封的層次結(jié)構(gòu)相比,現(xiàn)在對(duì)switch塊的檢查更加精確了。
Java 工具
JEP 413,支持在 Java API 文檔中加入代碼片段,為 Oracle 的標(biāo)準(zhǔn) Doclet 引入了 @snippet 標(biāo)記,這是一個(gè)眾所周知的 Java API 文檔實(shí)用程序,可生成默認(rèn)的 HTML 格式的輸出。其目的是簡(jiǎn)化 API 文檔中包含的示例源代碼。代碼片段可以是內(nèi)聯(lián)的,也可以是外部的,下面的這兩個(gè)示例將會(huì)說(shuō)明這一點(diǎn):
在如下內(nèi)聯(lián)的示例中,源代碼被添加到@snippet標(biāo)記前面的注釋中,并用大括號(hào)括起來(lái)了:
/**
* 下面的代碼展示了如何使用 {@code Optional.isPresent}:
* {@snippet :
* if (v.isPresent ()) {
* System.out.println ("v: " + v.get ());
* }
* }
*/
在如下外部的示例中,現(xiàn)有的源文件 ShowOptional.java 包含了 @start 和 @end 標(biāo)記。已定義的區(qū)域,即 region="example" ,在注釋和源文件中被引用:
/**
* 下面的代碼展示了如何使用 {@code Optional.isPresent}:
* {@snippet file="ShowOptional.java" region="example"}
*/
public class ShowOptional {
void show (Optional v) {
// @start region="example"
if (v.isPresent ()) {
System.out.println ("v: " + v.get());
}
// @end
}
}
JEP 408,簡(jiǎn)單 Web 服務(wù)器,提供了一個(gè)簡(jiǎn)易的 HTTP 命令行 Web 服務(wù)器,它只提供靜態(tài)文件。 該實(shí)用程序旨在用于原型設(shè)計(jì)、臨時(shí)編碼和測(cè)試,特別是在教育場(chǎng)景中。 服務(wù)器啟動(dòng)方式如下:
java -m jdk.httpserver [-b bind address] [-p port] [-d directory] [-h to show help message] [-o none|default|verbose]
Java 19
目前,Java 19 中只有一個(gè) Targeted 或 Integrated 狀態(tài)的 JEP:
JEP 422:Linux/RISC-V 移植
Java 19 的正式發(fā)布日期尚未公布,但按照 6 個(gè)月的發(fā)布周期推算,預(yù)計(jì)將于 2022 年 9 月中旬發(fā)布。開發(fā)人員預(yù)計(jì)會(huì)在 2022 年 6 月中旬進(jìn)行特性凍結(jié)。
Java 18 現(xiàn)在可以從 Oracle 下載了,其他供應(yīng)商的二進(jìn)制文件預(yù)計(jì)在幾天后提供。
?。?a href="http://m.rzslsm.com/wechat/">邯鄲小程序開發(fā))


小米應(yīng)用商店發(fā)布消息稱 持續(xù)開展“APP 侵害用戶權(quán)益治理”系列行動(dòng) 11:37:04
騰訊云與CSIG成立政企業(yè)務(wù)線 加速數(shù)字技術(shù)在實(shí)體經(jīng)濟(jì)中的落地和應(yīng)用 11:34:49
樂(lè)視回應(yīng)還有400多人 期待新的朋友加入 11:29:25
亞馬遜表示 公司正在將其智能購(gòu)物車擴(kuò)展到馬薩諸塞州的一家全食店 10:18:04
三星在元宇宙平臺(tái)推出游戲 玩家可收集原材料制作三星產(chǎn)品 09:57:29
特斯拉加州San Mateo裁減229名員工 永久關(guān)閉該地區(qū)分公司 09:53:13