Java 17進(jìn)行版本更見,支持網(wǎng)頁(yè)開發(fā)、安卓開發(fā)、客戶端開發(fā)等,為開發(fā)人員提供多功能服務(wù)。這里新增功能多多,輕松編程,讓你體驗(yàn)感更好,有需要的可以使用!
Java 17功能
? JEP 409:密封類
密封類已添加到 Java 語(yǔ)言中。密封類和接口限制哪些其他類或接口可以擴(kuò)展或?qū)崿F(xiàn)它們。
密封類由JEP 360提出,并在 JDK 15 中作為預(yù)覽功能提供。它們由JEP 397再次提出并進(jìn)行了改進(jìn),并作為預(yù)覽功能在 JDK 16 中提供?,F(xiàn)在在 JDK 17 中,密封類正在最終確定,與 JDK 16 沒有任何變化。
? JEP 406:開關(guān)模式匹配(預(yù)覽)
使用 switch 表達(dá)式和語(yǔ)句的模式匹配以及對(duì)模式語(yǔ)言的擴(kuò)展來(lái)增強(qiáng) Java 編程語(yǔ)言。將模式匹配擴(kuò)展到 switch 允許針對(duì)多個(gè)模式測(cè)試表達(dá)式,每個(gè)模式都有特定的操作,以便可以簡(jiǎn)潔安全地表達(dá)復(fù)雜的面向數(shù)據(jù)的查詢。
? JEP 382:新的 macOS 渲染管線
Swing API 用于渲染的 Java 2D API 現(xiàn)在可以使用適用于 macOS 的新 Apple Metal 加速渲染 API。
當(dāng)前默認(rèn)禁用此功能,因此渲染仍使用 OpenGL API,Apple 已棄用這些 API,但仍可用并受支持。
要啟用 Metal,應(yīng)用程序應(yīng)通過設(shè)置系統(tǒng)屬性來(lái)指定其用途:
-Dsun.java2d.metal=true
Metal 或 OpenGL 的使用對(duì)應(yīng)用程序是透明的,因?yàn)檫@是內(nèi)部實(shí)現(xiàn)的差異并且對(duì) Java API 沒有影響。金屬管道需要 macOS 10.14.x 或更高版本。將忽略在早期版本上設(shè)置它的嘗試。
? 用于訪問大圖標(biāo)的新 API
javax.swing.filechooser.FileSystemView.getSystemIcon(File, int, int)JDK 17 中提供了一種新方法 ,可以在可能的情況下訪問更高質(zhì)量的圖標(biāo)。完全針對(duì)Windows平臺(tái)實(shí)現(xiàn);但是,其他平臺(tái)上的結(jié)果可能會(huì)有所不同,稍后會(huì)得到增強(qiáng)。例如,通過使用以下代碼:
FileSystemView fsv = FileSystemView.getFileSystemView();
Icon icon = fsv.getSystemIcon(new File(“application.exe”), 64, 64);
JLabel label = new JLabel(icon);
用戶可以獲得更高質(zhì)量的“application.exe”文件圖標(biāo)。此圖標(biāo)適用于創(chuàng)建在 HighDPI 環(huán)境中可以更好縮放的標(biāo)簽。
Java 17特色
? DatagramSocket 可以直接用于加入多播組
java.net.DatagramSocket此版本中已更新以添加對(duì)加入多播組的支持?,F(xiàn)在定義joinGroup和leaveGroup方法加入和離開組播組。java.net.DatagramSocket已更新的類級(jí) API 文檔解釋了如何DatagramSocket配置普通的以及如何使用它來(lái)加入和離開多播組。
此更改意味著DatagramSocketAPI 可用于多播應(yīng)用程序,而無(wú)需使用舊版java.net.MulticastSocketAPI。該MulticastSocketAPI的工作和以前一樣,雖然它的大多數(shù)方法已被棄用。
? JEP 356:增強(qiáng)型偽隨機(jī)數(shù)生成器
為偽隨機(jī)數(shù)生成器 (PRNG) 提供新的接口類型和實(shí)現(xiàn),包括可跳轉(zhuǎn)的 PRNG 和額外的一類可拆分 PRNG 算法 (LXM)。
? 理想圖形可視化器的現(xiàn)代化
Ideal Graph Visualizer (IGV) 是一種以可視化和交互方式探索 HotSpot VM C2 即時(shí) (JIT) 編譯器中使用的中間表示的工具,已經(jīng)現(xiàn)代化。增強(qiáng)功能包括:
支持在高達(dá) JDK 15(IGV 底層 NetBeans 平臺(tái)支持的最新版本)上運(yùn)行 IGV
更快的基于 Maven 的 IGV 構(gòu)建系統(tǒng)
穩(wěn)定塊形成、組移除和節(jié)點(diǎn)跟蹤
默認(rèn)過濾器中更直觀的著色和節(jié)點(diǎn)分類
具有更自然默認(rèn)行為的排名快速節(jié)點(diǎn)搜索
現(xiàn)代化的 IGV與早期 JDK 版本生成的圖形部分兼容。它支持圖形加載和可視化等基本功能,但可能會(huì)影響節(jié)點(diǎn)聚類和著色等輔助功能。
src/utils/IdealGraphVisualizer/README.md工具源目錄中的文件中提供了有關(guān)構(gòu)建和運(yùn)行 IGV 的詳細(xì)信息。
? 錯(cuò)誤消息中的源詳細(xì)信息
當(dāng) JavaDoc 報(bào)告輸入源文件中的問題時(shí),它會(huì)顯示該問題的源代碼行,以及包含^指向該行位置的插入符號(hào) ( ) 的行,其方式類似于編譯器 ( javac) 診斷消息。
此外,日志和其他“信息”消息現(xiàn)在被寫入標(biāo)準(zhǔn)錯(cuò)誤流,讓標(biāo)準(zhǔn)輸出流用于命令行選項(xiàng)特別請(qǐng)求的輸出,例如命令行幫助。
工具/javadoc(工具)
? 新的“新 API”頁(yè)面和改進(jìn)的“棄用”頁(yè)面
JavaDoc 現(xiàn)在可以生成一個(gè)頁(yè)面,總結(jié)最近 API 的變化。要包含的最新版本列表是使用--since命令行選項(xiàng)指定的。這些值用于查找@since要包含在新頁(yè)面上的具有匹配標(biāo)簽的聲明。該--since-label命令行選項(xiàng)提供了“新API”頁(yè)面的標(biāo)題文本使用。
在匯總棄用項(xiàng)目的頁(yè)面上,您可以查看按棄用項(xiàng)目所在版本分組的項(xiàng)目。
核心庫(kù)
? JEP 412:外部函數(shù)和內(nèi)存 API(孵化器)
介紹一個(gè) API,Java 程序可以通過該 API 與 Java 運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作。通過有效調(diào)用外部函數(shù)(即 JVM 之外的代碼),以及安全地訪問外部?jī)?nèi)存(即不由 JVM 管理的內(nèi)存),API 使 Java 程序能夠調(diào)用本地庫(kù)和處理本地?cái)?shù)據(jù),而沒有JNI。
Java 17亮點(diǎn)
? 控制臺(tái)字符集 API
java.io.Console已更新以定義返回Charset控制臺(tái)的新方法。返回的字符集可能與從Charset.defaultCharset()方法返回的字符集不同。例如,它返回IBM437whileCharset.defaultCharset()返回windows-1252Windows (en-US)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱CSR。
? 用于反序列化的 JDK 飛行記錄器事件
現(xiàn)在可以使用 JDK Flight Recorder (JFR) 監(jiān)視對(duì)象的反序列化。當(dāng)啟用 JFR 并且 JFR 配置包括反序列化事件時(shí),每當(dāng)正在運(yùn)行的程序嘗試反序列化對(duì)象時(shí),JFR 都會(huì)發(fā)出一個(gè)事件。反序列化事件名為jfr.Deserialization,默認(rèn)情況下是禁用的。反序列化事件包含序列化過濾器機(jī)制使用的信息;請(qǐng)參閱ObjectInputFilter規(guī)范。此外,如果啟用了過濾器,則 JFR 事件指示過濾器是接受還是拒絕對(duì)象的反序列化。有關(guān)如何使用 JFR 反序列化事件的更多信息,請(qǐng)參閱文章監(jiān)控反序列化以提高應(yīng)用程序安全性。 有關(guān)使用和配置 JFR 的參考信息,請(qǐng)參閱JDK 任務(wù)控制文檔的JFR 運(yùn)行時(shí)指南和JFR 命令參考部分。
Java 17測(cè)評(píng)
Java 17這是新版本,功能進(jìn)行升級(jí)!



































