AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Java 21正式發布,15大特性一覽

來源: 責編: 時間:2023-09-21 20:47:41 265觀看
導讀Java 開發工具包(JDK) 21 是 Oracle 標準 Java 實現的最新長期支持 (LTS) 版本,現已推出生產版本。比較實用的我看就5個,字符串模板、有序集合、記錄模式、switch的模式匹配、虛擬線程,其他一般也用不大到。1. JEP 430:字

Java 開發工具包(JDK) 21 是 Oracle 標準 Java 實現的最新長期支持 (LTS) 版本,現已推出生產版本。比較實用的我看就5個,字符串模板、有序集合、記錄模式、switch的模式匹配、虛擬線程,其他一般也用不大到。ic628資訊網——每日最新資訊28at.com

ic628資訊網——每日最新資訊28at.com

1. JEP 430:字符串模板

對現有Java字符串處理進行增強。包括兩個模板處理器STR和FMT。簡單示例:ic628資訊網——每日最新資訊28at.com

STR模板處理器:ic628資訊網——每日最新資訊28at.com

String firstName = "Bill";String lastName  = "Duck";String fullName  = STR."/{firstName} /{lastName}";| "Bill Duck"String sortName  = STR."/{lastName}, /{firstName}";| "Duck, Bill"

FMT模板處理器:ic628資訊網——每日最新資訊28at.com

String table = FMT."""    Description     Width    Height     Area    %-12s/{zone[0].name}  %7.2f/{zone[0].width}  %7.2f/{zone[0].height}     %7.2f/{zone[0].area()}    %-12s/{zone[1].name}  %7.2f/{zone[1].width}  %7.2f/{zone[1].height}     %7.2f/{zone[1].area()}    %-12s/{zone[2].name}  %7.2f/{zone[2].width}  %7.2f/{zone[2].height}     %7.2f/{zone[2].area()}    /{" ".repeat(28)} Total %7.2f/{zone[0].area() + zone[1].area() + zone[2].area()}    """;| """| Description     Width    Height     Area| Alfa            17.80    31.40      558.92| Bravo            9.60    12.40      119.04| Charlie          7.10    11.23       79.73|                              Total  757.69| """

2.JEP 431:有序集合

提供了SequencedCollection、SequencedSet、SequencedMap。關系如下:ic628資訊網——每日最新資訊28at.com

ic628資訊網——每日最新資訊28at.com

3.JEP 439:分代 ZGC

通過擴展 ZGC 來為新對象和舊對象維護不同的代,從而提高應用程序性能。年輕的對象往往會早逝;維護不同的代將允許 ZGC 更頻繁地收集年輕對象。使用分代 ZGC 運行的應用程序具有以下優勢:分配停頓的風險較低,所需的堆內存開銷較低,并且垃圾收集 CPU 開銷較低。與非分代 ZGC 相比,這些好處應該是可以實現的,而不會顯著降低吞吐量。ic628資訊網——每日最新資訊28at.com

4.JEP 440:記錄模式

使用記錄模式增強 Java 編程語言以解構記錄值。記錄模式和類型模式可以嵌套,以實現強大的、聲明性的、可組合形式的數據導航和處理。ic628資訊網——每日最新資訊28at.com

示例:ic628資訊網——每日最新資訊28at.com

// Java 16record Point(int x, int y) {}static void printSum(Object obj) {    if (obj instanceof Point p) {        int x = p.x();        int y = p.y();        System.out.println(x+y);    }}// Java 21static void printSum(Object obj) {    if (obj instanceof Point(int x, int y)) {        System.out.println(x+y);    }}

5.JEP 441:switch的模式匹配

switch 通過表達式和語句的模式匹配增強 Java 編程語言。擴展模式匹配switch允許針對多個模式測試表達式,每個模式都有一個特定的操作,以便可以簡潔、安全地表達復雜的面向數據的查詢。ic628資訊網——每日最新資訊28at.com

示例:ic628資訊網——每日最新資訊28at.com

static String formatterPatternSwitch(Object obj) {    return switch (obj) {        case Integer i -> String.format("int %d", i);        case Long l    -> String.format("long %d", l);        case Double d  -> String.format("double %f", d);        case String s  -> String.format("String %s", s);        default        -> obj.toString();    };}
static void testFooBarNew(String s) {    switch (s) {        case null         -> System.out.println("Oops");        case "Foo", "Bar" -> System.out.println("Great");        default           -> System.out.println("Ok");    }}

6.JEP 442:外部函數和內存 API

通過高效地調用外部函數并安全地訪問外部內存,該 API 使 Java 程序能夠調用本機庫并處理本機數據,而沒有 JNI(Java 本機接口)的脆弱性和危險性。該 API 之前已在JDK 20 和JDK 19中預覽。JDK 21 預覽版中的改進包括增強的布局路徑,其中包含用于取消引用地址布局的新元素。ic628資訊網——每日最新資訊28at.com

7.JEP 443:未命名模式和變量

使用未命名模式和未命名變量(可以初始化但不能使用)增強 Java 語言,未命名模式匹配記錄組件而不說明組件的名稱或類型。兩者都由下劃線字符 表示_。ic628資訊網——每日最新資訊28at.com

未命名模式示例:ic628資訊網——每日最新資訊28at.com

a instanceof Point(_, int y)

未命名的模式變量:ic628資訊網——每日最新資訊28at.com

r instanceof Point _r instanceof ColoredPoint(Point(int x, int _), Color _)

8.JEP 444:虛擬線程

虛擬線程是輕量級線程,可以顯著減少編寫、維護和觀察高吞吐量并發應用程序的工作量。ic628資訊網——每日最新資訊28at.com

創建虛擬線程示例:ic628資訊網——每日最新資訊28at.com

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {    IntStream.range(0, 10_000).forEach(i -> {        executor.submit(() -> {            Thread.sleep(Duration.ofSeconds(1));            return i;        });    });}

9.JEP 445:未命名類和實例Main方法

核心目的是幫助教學和學習。ic628資訊網——每日最新資訊28at.com

以后寫 main 方法就變得簡單了,不需要一堆的修飾符。如下:ic628資訊網——每日最新資訊28at.com

class HelloWorld {     void main() {         System.out.println("Hello, World!");    }}

甚至可以不需要類聲明,代碼削減:ic628資訊網——每日最新資訊28at.com

void main() {       System.out.println("Hello, World!");}

說明:未命名包中的類不能被命名包中的類顯式引用。ic628資訊網——每日最新資訊28at.com

10.JEP 446:作用域值

將支持在線程內和線程間共享不可變數據。它們優于線程局部變量,特別是在使用大量虛擬線程時。線程局部變量具有設計缺陷,包括無約束的可變性、無限制的生命周期和昂貴的繼承。作用域值允許在大型程序中的組件之間安全地共享數據,而無需求助于方法參數。ic628資訊網——每日最新資訊28at.com

11.JEP 448:向量API

引入 API 來表達向量計算,在運行時可靠地編譯為支持的 CPU 架構上的最佳向量指令,從而實現優于同等標量計算的性能。ic628資訊網——每日最新資訊28at.com

12.JEP 449:棄用 Windows 32 位 x86 端口

目標是在未來版本中刪除該端口,原因是最后一個支持 32 位操作的 Windows 操作系統 Windows 10 將于 2025 年 10 月結束生命周期。ic628資訊網——每日最新資訊28at.com

13.JEP 451:準備禁止動態加載代理

在 JDK 21 中,計劃要求動態加載代理必須得到應用程序所有者的批準,就像代理啟動時加載所要求的那樣。此更改將使 Java 平臺更接近默認完整性。ic628資訊網——每日最新資訊28at.com

14.JEP 452:密鑰封裝機制 API

該提案的目標之一是使應用程序能夠使用 KEM 算法,例如 RSA 密鑰封裝機制 (RSA-KEM)、橢圓曲線集成加密方案 (ECIES) 以及美國國家標準與技術研究院 (NIST) 的候選算法后量子密碼學標準化過程。另一個目標是允許在傳輸層安全 (TLS) 等更高級別協議和混合公鑰加密 (HPKE) 等加密方案中使用 KEM。安全提供商將能夠以 Java 代碼或本機代碼實現 KEM 算法,并包括RFC 9180中定義的 Diffie-Hellman KEM (DHKEM) 的實現。ic628資訊網——每日最新資訊28at.com

15.JEP 453:結構化并發

通過結構化并發 API 簡化了并發編程,將在不同線程中運行的相關任務組視為單個工作單元。這簡化了錯誤處理和取消,提高了可靠性并增強了可觀察性。結構化并發之前在JDK 20JDK 19中孵化,分別于 2022 年 3 月和 2022 年 9 月發布;它將作為java.util.concurrent包中的預覽 API。這次唯一顯著的變化是該StructuredTaskScope::Fork(…)方法返回 Subtask而不是 Future。結構化并發的目標包括推廣一種并發編程風格,可以消除因取消和關閉而產生的常見風險,例如線程泄漏和取消延遲,以及提高并發代碼的可觀察性。ic628資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10896-0.htmlJava 21正式發布,15大特性一覽

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 用 Rust 編碼?這是 JetBrains 的新 IDE

下一篇: 這種方法可以解決開發中的重復“造輪子”

標簽:
  • 熱門焦點
Top