java16學習筆記

Java16是一個重要的特性發布,它為JAVA帶來了許多JVM特定的更改和語言特定的更改。它遵循了自JavaJava10以來引入的Java發布步調,并于2021年3月發布,僅在Java15發布后的六個月內發布。

Java 16是一個非LTS版本。

338:Vector API (Incubator)?矢量API(孵化)
347:Enable C++14 Language Features?啟用C++14語言功能
357:Migrate from Mercurial to Git?從Mercurial遷移到Git
369:Migrate to GitHub?遷移到GitHub
376:ZGC: Concurrent Thread-Stack Processing?ZGC:并發線程堆棧處理
380:Unix-Domain Socket Channels?Unix域套接字通道
386:Alpine Linux Port?Alpine Linux端口
387:Elastic Metaspace?彈性元空間
388:Windows/AArch64 Port?Windows/AArch64 Port
389:Foreign Linker API (Incubator)?外部鏈接商API(孵化)
390:Warnings for Value-Based Classes?基于值的類的警告
392:Packaging Tool?打包工具
393:Foreign-Memory Access API (Third Incubator)?外部內存訪問API(第三次孵化)
394:Pattern Matching for instanceof?增強instanceof
395:Records?新增Record類
396:Strongly Encapsulate JDK Internals by Default?默認情況下嚴格封裝JDK內部
397:Sealed Classes (Second Preview)?密封類(第二次預覽)

JEP 338: Vector API (Incubator)

詳情參閱java16學習筆記-Vector API

JEP 347: Enable C++14 Language Features

允許在JDK C++源代碼中使用C++14語言功能,并就哪些功能可以在HotSpot代碼中使用給出具體指導。

JEP 357: Migrate from Mercurial to Git

將OpenJDK社區的源代碼庫從Mercurial(hg)遷移到Git

JEP 369: Migrate to GitHub

在GitHub上托管OpenJDK社區的Git存儲庫。結合JEP 357Migrate from Mercurial to Git,這將把所有單一存儲庫OpenJDK項目遷移到GitHub,包括JDK功能版本和JDK 11及更高版本的更新版本。

JEP 376: ZGC: Concurrent Thread-Stack Processing

將ZGC線程堆棧處理從安全點轉移到并發階段。

Z垃圾收集器目標是解決JVM中的GC暫停和可擴展性問題。目前我們已經將所有隨堆大小和元空間大小而擴展的GC操作,從安全點操作轉移到并發階段。這些包括標記、重定位、引用處理、類卸載和大多數根處理。
在GC安全點中仍然完成的唯一活動是根處理的一個子集和有時間限制的標記終止操作。根包括Java線程堆棧和各種其他線程根。這些根是有問題的,因為它們會隨著線程的數量而擴展。大型機器上有許多線程,根處理成為一個問題。
為了超越我們今天所擁有的,并滿足在GC安全點內花費的時間不超過一毫秒的期望,即使在大型機器上,我們也必須將每個線程的處理(包括堆棧掃描)轉移到并發階段。
在這項工作之后,ZGC安全點操作內部基本上不會做任何有意義的事情。
作為該項目的一部分構建的基礎設施最終可能會被其他項目(如Loom和JFR)使用,以統一延遲堆棧處理。

JEP 380: Unix-Domain Socket Channels

對于本地,過程間通信,UNIX域插座比TCP/IP環回連接更安全,更有效。

  • UNIX域插座嚴格用于同一系統上的過程之間的通信。不打算接受遠程連接的應用程序可以通過使用Unix-Domain插座來提高安全性。

  • Unix域插座受到強制執行的基于文件系統的訪問控件的操作系統進一步保護。

  • 與TCP/IP環回連接相比,Unix-Domain插座具有更快的設置時間和更高的數據吞吐量。

  • 對于容器環境的TCP/IP套件,Unix-Domain插座可能是更好的解決方案,在該容器環境中,需要同一系統上的容器之間的通信。這可以使用位于共享量的插座來實現。

Unix-Domain插座長期以來一直是大多數UNIX平臺的功能,現在在Windows 10和Windows Server 2019中得到支持。

為了支持Unix-Domain插座通道,我們將添加以下API元素:

  • 一個新的插座地址類java.net.UnixDomainSocketAddress

  • UNIX現有枚舉的恒定值java.net.StandardProtocolFamily

  • 新的open工廠方法SocketChannelServerSocketChannel指定協議家族

  • 更新到?SocketChannel規格ServerSocketChannel,以指定通向UNIX域插座行為的渠道。

JEP 386: Alpine Linux Port

將JDK移至Alpine Linux,以及其他使用MUSL作為主要C庫的Linux發行版,都可以在X64和AARCH64架構上。

JEP 387: Elastic Metaspace

更及時地將未使用的HotSpot類元數據(即元空間)內存還給操作系統,減少元空間的占用,并簡化元空間代碼,以降低維護成本。

JEP 388: Windows/AArch64 Port

將 JDK 移植到 Windows/AArch64。

JEP 389: Foreign Linker API (Incubator)

引入一個 API,提供對本機代碼的靜態類型、純 Java 訪問。此 API 與外部內存 API (JEP 393) 一起,將大大簡化綁定到本機庫的容易出錯的過程。

詳情可以查看文章??Foreign-Memory Access API外部內存API -CSDN博客

JEP 390: Warnings for Value-Based Classes

將原始包裝器類指定為基于值的,并棄用其 構造函數,提示新的棄用警告。 提供有關在 Java 平臺中任何基于值的類。

對于用構造函數創建包裝類的java語句例如:Double d = new Double(Math.random())

java8會給出建議

java9-java15

?java16代碼給出警告(飄紅),但是可以運行,

JEP 392: Packaging Tool

提供用于打包獨立 Java 應用程序的工具。jpackage

該工具由?JEP 343?作為孵化工具引入 JDK 14。在 JDK 15 中,它仍然是一個孵化工具,以便有時間獲得額外的反饋。現在,它已準備好從孵化提升為生產就緒功能。由于此轉換,模塊的名稱將從 更改為 。jpackagejpackagejdk.incubator.jpackagejdk.jpackage

相對于 JEP 343 的唯一實質性變化是,我們將該選項替換為更通用的選項,如下:--bind-services--jlink-options

基本用法

$ jpackage --name myapp --input lib --main-jar main.jar

如果所打包文件沒有Main-Class屬性,則必須指定主類

$ jpackage --name myapp --input lib --main-jar main.jar \--main-class myapp.Main

模塊化

$ jpackage --name myapp  --module-path --input lib --main-jar main.jar \--main-class myapp.Main

JEP 393: Foreign-Memory Access API (Third Incubator)

引入一個 API,允許 Java 程序安全高效地訪問 Java 堆之外的外部內存。

?詳情可以查看文章??Foreign-Memory Access API外部內存API -CSDN博客

JEP 394: Pattern Matching for instanceof

通過運算符的模式匹配來增強 Java 編程語言。模式匹配允許程序中的通用邏輯,即條件提取 對象中的組件,以更簡潔、更安全地表達。instanceof

詳情可以查看文章?java14學習筆記-part1-CSDN博客

JEP 395: Records

使用Records增強 Java 編程語言 充當不可變數據的透明載體。

記錄由?JEP 359?提出,并在?JDK 14?中作為預覽功能提供。

為了響應反饋,JEP 384?對設計進行了改進,并在?JDK 15?中作為 預覽功能。第二次預覽的改進如下:

  • 在第一個預覽版中,規范構造函數需要為 . 在第二個預覽中,如果規范構造函數是 隱式聲明,則其訪問修飾符與 record 類相同;如果 規范構造函數被顯式聲明,然后它的訪問修飾符必須提供 至少與 Record 類一樣多的訪問權限。public

  • 注釋的含義被擴展為包括 注釋方法是顯式聲明的訪問器方法的情況 記錄組件。@Override

  • 為了強制執行緊湊構造函數的預期用途,它變成了編譯時 error 分配給構造函數正文中的任何實例字段。

  • 能夠聲明本地記錄類、本地枚舉類和本地接口 被介紹。

本 JEP 建議在 JDK 16 中完成該功能,并進行以下改進:

  • 放寬長期以來的限制,即內部階級 不能聲明顯式或隱式靜態的成員。這將成為合法的 特別是,將允許內部類聲明作為記錄類的成員。

根據進一步的反饋,可能會進行其他改進。

詳情可以查看文章??java14學習筆記-part1-CSDN博客

JEP 396: Strongly Encapsulate JDK Internals by Default

默認情況下,強封裝 JDK 的所有內部元素,但 用于關鍵的內部 API,例如 .允許結束 用戶選擇寬松的強封裝,即一直 自 JDK 9 以來的默認值。sun.misc.Unsafe

持續提升 JDK 的安全性和可維護性

鼓勵開發者從使用內部元素遷移到 標準 API,以便他們和他們的用戶都可以在沒有 對未來的 Java 版本大驚小怪。

JEP 397: Sealed Classes (Second Preview)

使用密封的類和接口增強 Java 編程語言。密封的類和接口限制了哪些其他類或接口可以擴展或實現它們。這是 JDK 16 中的預覽語言功能。

密封類是由?JEP 360?提出的,并且在?JDK 15?中作為預覽功能交付。

本 JEP 建議在 JDK 16 中重新預覽該功能,并進行以下改進:

  • 指定上下文關鍵字的概念,取代先前的概念JLS 中的受限標識符受限關鍵字。引入字符序列 、 和作為上下文 關鍵字。sealednon-sealedpermits

  • 與匿名類和 lambda 表達式一樣,局部類可能不是密封類的子類,在確定隱式聲明的允許類或接口的子類時。sealedsealed

  • 增強縮小引用轉換,以執行更嚴格的檢查相對于密封類型層次結構的轉換。

詳情可以查看文章?java15學習筆記-密封類-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919218.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

useCallback 的陷阱:當 React Hooks 反而拖了后腿

我有一支技術全面、經驗豐富的小型團隊,專注高效交付中等規模外包項目,有需要外包項目的可以聯系我很多代碼庫到處都是 useCallback / useMemo。初衷是好的:減少不必要的重新渲染、穩定引用、提速。然而,用錯場景或鋪天蓋地地包一…

【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依賴

pom.xml中去除maven中未使用的依賴主要解決的問題一、怎么做?二、重點依賴類型解析說明三、什么時候做?四、有什么風險要注意的?五、補充一個快捷方法使用六、IDEA的terminal中如何才能使用命令mvn呢?主要解決的問題 你的項目中p…

安卓9.0系統修改定制化____關于自啟腳本的規律、編寫與實戰示例 推薦收藏【二】

在定制化ROM服務中,許多功能都需要通過自啟腳本來實現。上期博文詳細解析了腳本編寫的規律、權限設置以及常見錯誤踩坑的排查與修復方法,并逐行解釋了腳本代碼的含義。掌握這些基礎知識后,這期再以實例演示的過程來使我們使用更得心應手。。 通過博文了解?????? 1?…

選擇gpt-5還是claude-4-sonnect

了解我的朋友都知道,我是一個偽全棧工程師,一個人加AI編程工具打天下。 最近,gpt-5已經出來有一段時間了,cursor第一時間就支持了gpt-5模型,我第一時間就嘗試了gpt-5效果。說實話,gpt-5和claude-4-sonnect都…

自動化運維實驗(二)---自動識別設備,并導出配置

目錄 一、實驗拓撲 二、實驗目的 三、實驗步驟 實驗思路: 代碼部分: 四、實驗結果: 一、實驗拓撲 二、實驗目的 ssh遠程登錄后,識別設備類型(華三、華為、銳捷、山石、飛塔、深信服等),再…

Matlab(4)初階繪圖

一、Basic plotting1.plot()plot(x,y) :x圖片中點的橫坐標,y圖片中點的縱坐標plot(y) :y圖片中點的縱坐標,x圖片中點的橫坐標默認為1,2,3,4,5........plot(co…

服務器硬件電路設計之 I2C 問答(五):I2C 總線數據傳輸方向如何確定、信號線上的串聯電阻有什么作用?

在服務器硬件電路設計中,I2C 總線作為常用的串行通信總線,其數據傳輸方向的確定和信號線上串聯電阻的作用是關鍵知識點。?I2C 總線數據傳輸方向由主設備和從設備的角色以及讀寫位共同確定。主設備是發起通信的一方,從設備則是被尋址的對象。…

OpenBMC中C++策略模式架構、原理與應用

1. 策略模式概述 策略模式(Strategy Pattern)是一種行為型設計模式,它允許在運行時動態選擇算法或行為,而無需修改客戶端代碼。 核心思想:封裝可互換的算法族,使它們可以獨立于使用它們的客戶端變化。 1.…

【python實用小腳本-187】Python一鍵批量改PDF文字:拖進來秒出新文件——再也不用Acrobat來回導

Python一鍵批量改PDF文字:拖進來秒出新文件——再也不用Acrobat來回導 PDF文字替換, 批量導出, 零依賴轉檔, 一鍵完成, 瑞士軍刀 故事開場:一把瑞士軍刀救了周五下班的你 周五 18:00,老板甩來 50 份合同 PDF: “把里面的‘2023’全…

汽車后霧燈色度難達標?OAS 軟件精準解決破瓶頸

汽車后霧燈案例分析簡介汽車后霧燈是車輛在能見度較低的霧、雨、雪等惡劣天氣條件下行駛時,向后方車輛傳遞警示信號的重要裝置,其性能直接關系到車輛的后方安全。根據規定,紅色信號燈需符合 CIE1931 標準,其色度坐標 X 值應在 0.6…

[系統架構設計師]架構設計專業知識(二)

[系統架構設計師]架構設計專業知識(二) 一.信息系統基礎知識 1.信息系統概述 信息系統功能:輸入,存儲,處理,輸出,控制 理查德.諾蘭: 初始,傳播,控制&#xff…

如果用ApiFox調用Kubernetes API,需要怎么設置證書?

針對Docker Desktop中Kubernetes訪問報SSL/TLS信任關系錯誤的問題,以下是綜合解決方案:要在Postman中調用Kubernetes API并設置證書,需按以下步驟操作:🔐 證書設置步驟?提取證書文件?從kubeconfig文件(~/…

nodejs 路由/請求

//導入模塊 const express require(express); //創建應用 const app express();//設置路由 app.get(/,(req,resp)>{//輸出響應console.log(request coming.............);resp.json(req.headers); });app.get(/user/:id, (req, res) > {const userId req.params.id; …

Python 數據可視化:柱狀圖/熱力圖繪制實例解析

Python 數據可視化:柱狀圖繪制實例解析 一、引言 數據可視化是數據分析中至關重要的環節,它能將復雜的數據以直觀的圖形方式呈現,幫助我們更好地理解數據特征和規律。Python 擁有豐富的可視化庫,其中 Matplotlib 是最常用的基礎庫…

API生命周期10階段

一、策略規劃(Strategy Planning) 核心任務:業務價值對齊、技術路線設計關鍵產出: API產品藍圖:定義業務領域邊界(如支付API域、用戶API域)治理規范:《API安全標準》《版本管理策略》…

UGUI源碼剖析(9):布局的實現——LayoutGroup的算法與實踐

UGUI源碼剖析(第九章):布局的實現——LayoutGroup的算法與實踐 在前一章中,我們剖析了LayoutRebuilder是如何調度布局重建的。現在,我們將深入到布局核心,去看看那些具體的組件——LayoutGroup系列組件是如…

GitHub PR 提交流程

step1 在 GitHub 上 fork 目標倉庫&#xff08;手動操作&#xff09; step2 將 fork 的目標倉庫克隆到本地 git clone https://github.com/<your-username>/<repo-name>.git cd <repo-name>step3 與上游目標倉庫建立鏈接 git remote add upstream https://gi…

礦物分類案列 (一)六種方法對數據的填充

目錄 礦物數據項目介紹&#xff1a; 數據問題與處理方案&#xff1a; 數據填充策略討論&#xff1a; 模型選擇與任務類型&#xff1a; 模型訓練計劃&#xff1a; 一.數據集填充 1.讀取數據 2.把標簽轉化為數值 3.把異常數據轉化為nan 4.數據Z標準化 5.劃分訓練集測試…

vue:vue3的方法torefs和方法toref

在 Vue 3 的 Composition API 中,toRef 和 toRefs 是兩個用于處理響應式數據的重要工具,它們專門用于從 reactive() 對象中提取屬性并保持響應性。 toRef() 作用:將 reactive 對象的單個屬性轉換為一個 ref 對象,保持與源屬性的響應式連接。 使用場景: 需要單獨提取 rea…

Android 移動端 UI 設計:前端常用設計原則總結

在 Android 移動端開發中&#xff0c;優秀的 UI 設計不僅需要視覺上的美觀&#xff0c;更需要符合用戶習慣、提升操作效率的設計邏輯。前端 UI 設計原則是指導開發者將功能需求轉化為優質用戶體驗的核心準則&#xff0c;這些原則貫穿于布局結構、交互反饋、視覺呈現等各個環節。…