成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 21正式發(fā)布,15大特性一覽

開(kāi)發(fā) 開(kāi)發(fā)工具
Java 開(kāi)發(fā)工具包(JDK) 21 是 Oracle 標(biāo)準(zhǔn) Java 實(shí)現(xiàn)的最新長(zhǎng)期支持 (LTS) 版本,現(xiàn)已推出生產(chǎn)版本。比較實(shí)用的我看就5個(gè),字符串模板、有序集合、記錄模式、switch的模式匹配、虛擬線程,其他一般也用不大到。

Java 開(kāi)發(fā)工具包(JDK) 21 是 Oracle 標(biāo)準(zhǔn) Java 實(shí)現(xiàn)的最新長(zhǎng)期支持 (LTS) 版本,現(xiàn)已推出生產(chǎn)版本。比較實(shí)用的我看就5個(gè),字符串模板、有序集合、記錄模式、switch的模式匹配、虛擬線程,其他一般也用不大到。

1. JEP 430:字符串模板

對(duì)現(xiàn)有Java字符串處理進(jìn)行增強(qiáng)。包括兩個(gè)模板處理器STR和FMT。簡(jiǎn)單示例:

STR模板處理器:

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

FMT模板處理器:

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。關(guān)系如下:

3.JEP 439:分代 ZGC

通過(guò)擴(kuò)展 ZGC 來(lái)為新對(duì)象和舊對(duì)象維護(hù)不同的代,從而提高應(yīng)用程序性能。年輕的對(duì)象往往會(huì)早逝;維護(hù)不同的代將允許 ZGC 更頻繁地收集年輕對(duì)象。使用分代 ZGC 運(yùn)行的應(yīng)用程序具有以下優(yōu)勢(shì):分配停頓的風(fēng)險(xiǎn)較低,所需的堆內(nèi)存開(kāi)銷(xiāo)較低,并且垃圾收集 CPU 開(kāi)銷(xiāo)較低。與非分代 ZGC 相比,這些好處應(yīng)該是可以實(shí)現(xiàn)的,而不會(huì)顯著降低吞吐量。

4.JEP 440:記錄模式

使用記錄模式增強(qiáng) Java 編程語(yǔ)言以解構(gòu)記錄值。記錄模式和類(lèi)型模式可以嵌套,以實(shí)現(xiàn)強(qiáng)大的、聲明性的、可組合形式的數(shù)據(jù)導(dǎo)航和處理。

示例:

// Java 16
record 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 21
static void printSum(Object obj) {
    if (obj instanceof Point(int x, int y)) {
        System.out.println(x+y);
    }
}

5.JEP 441:switch的模式匹配

switch 通過(guò)表達(dá)式和語(yǔ)句的模式匹配增強(qiáng) Java 編程語(yǔ)言。擴(kuò)展模式匹配switch允許針對(duì)多個(gè)模式測(cè)試表達(dá)式,每個(gè)模式都有一個(gè)特定的操作,以便可以簡(jiǎn)潔、安全地表達(dá)復(fù)雜的面向數(shù)據(jù)的查詢。

示例:

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:外部函數(shù)和內(nèi)存 API

通過(guò)高效地調(diào)用外部函數(shù)并安全地訪問(wèn)外部?jī)?nèi)存,該 API 使 Java 程序能夠調(diào)用本機(jī)庫(kù)并處理本機(jī)數(shù)據(jù),而沒(méi)有 JNI(Java 本機(jī)接口)的脆弱性和危險(xiǎn)性。該 API 之前已在JDK 20 和JDK 19中預(yù)覽。JDK 21 預(yù)覽版中的改進(jìn)包括增強(qiáng)的布局路徑,其中包含用于取消引用地址布局的新元素。

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

使用未命名模式和未命名變量(可以初始化但不能使用)增強(qiáng) Java 語(yǔ)言,未命名模式匹配記錄組件而不說(shuō)明組件的名稱或類(lèi)型。兩者都由下劃線字符 表示_。

未命名模式示例:

a instanceof Point(_, int y)

未命名的模式變量:

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

8.JEP 444:虛擬線程

虛擬線程是輕量級(jí)線程,可以顯著減少編寫(xiě)、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序的工作量。

創(chuàng)建虛擬線程示例:

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

9.JEP 445:未命名類(lèi)和實(shí)例Main方法

核心目的是幫助教學(xué)和學(xué)習(xí)。

以后寫(xiě) main 方法就變得簡(jiǎn)單了,不需要一堆的修飾符。如下:

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

甚至可以不需要類(lèi)聲明,代碼削減:

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

說(shuō)明:未命名包中的類(lèi)不能被命名包中的類(lèi)顯式引用。

10.JEP 446:作用域值

將支持在線程內(nèi)和線程間共享不可變數(shù)據(jù)。它們優(yōu)于線程局部變量,特別是在使用大量虛擬線程時(shí)。線程局部變量具有設(shè)計(jì)缺陷,包括無(wú)約束的可變性、無(wú)限制的生命周期和昂貴的繼承。作用域值允許在大型程序中的組件之間安全地共享數(shù)據(jù),而無(wú)需求助于方法參數(shù)。

11.JEP 448:向量API

引入 API 來(lái)表達(dá)向量計(jì)算,在運(yùn)行時(shí)可靠地編譯為支持的 CPU 架構(gòu)上的最佳向量指令,從而實(shí)現(xiàn)優(yōu)于同等標(biāo)量計(jì)算的性能。

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

目標(biāo)是在未來(lái)版本中刪除該端口,原因是最后一個(gè)支持 32 位操作的 Windows 操作系統(tǒng) Windows 10 將于 2025 年 10 月結(jié)束生命周期。

13.JEP 451:準(zhǔn)備禁止動(dòng)態(tài)加載代理

在 JDK 21 中,計(jì)劃要求動(dòng)態(tài)加載代理必須得到應(yīng)用程序所有者的批準(zhǔn),就像代理啟動(dòng)時(shí)加載所要求的那樣。此更改將使 Java 平臺(tái)更接近默認(rèn)完整性。

14.JEP 452:密鑰封裝機(jī)制 API

該提案的目標(biāo)之一是使應(yīng)用程序能夠使用 KEM 算法,例如 RSA 密鑰封裝機(jī)制 (RSA-KEM)、橢圓曲線集成加密方案 (ECIES) 以及美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST) 的候選算法后量子密碼學(xué)標(biāo)準(zhǔn)化過(guò)程。另一個(gè)目標(biāo)是允許在傳輸層安全 (TLS) 等更高級(jí)別協(xié)議和混合公鑰加密 (HPKE) 等加密方案中使用 KEM。安全提供商將能夠以 Java 代碼或本機(jī)代碼實(shí)現(xiàn) KEM 算法,并包括RFC 9180中定義的 Diffie-Hellman KEM (DHKEM) 的實(shí)現(xiàn)。

15.JEP 453:結(jié)構(gòu)化并發(fā)

通過(guò)結(jié)構(gòu)化并發(fā) API 簡(jiǎn)化了并發(fā)編程,將在不同線程中運(yùn)行的相關(guān)任務(wù)組視為單個(gè)工作單元。這簡(jiǎn)化了錯(cuò)誤處理和取消,提高了可靠性并增強(qiáng)了可觀察性。結(jié)構(gòu)化并發(fā)之前在JDK 20JDK 19中孵化,分別于 2022 年 3 月和 2022 年 9 月發(fā)布;它將作為java.util.concurrent包中的預(yù)覽 API。這次唯一顯著的變化是該StructuredTaskScope::Fork(…)方法返回 Subtask而不是 Future。結(jié)構(gòu)化并發(fā)的目標(biāo)包括推廣一種并發(fā)編程風(fēng)格,可以消除因取消和關(guān)閉而產(chǎn)生的常見(jiàn)風(fēng)險(xiǎn),例如線程泄漏和取消延遲,以及提高并發(fā)代碼的可觀察性。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2024-06-28 11:39:21

2010-07-27 09:34:15

FreeBSD 8.1

2011-05-26 10:27:37

Fedora 15

2017-09-22 14:04:33

前端Node.js新特性

2010-05-11 13:50:26

Scala

2010-07-20 10:19:06

Wine 1.2

2017-10-24 14:57:12

前端Vue 2.5新功能特性

2021-12-15 19:31:51

Windows 11操作系統(tǒng)微軟

2013-08-12 14:25:27

2012-10-23 12:22:35

獨(dú)立版本W(wǎng)indows全新的Metro界面

2010-06-01 09:52:27

jQuery Tool

2009-09-28 10:58:31

Google新搜索特性

2013-10-18 14:23:21

Ubuntu 13.1Kbuntu 13.1

2011-10-19 08:52:59

Android 4.0新特性

2009-07-29 09:40:02

Flex 4

2009-07-27 14:19:01

Eclipse JDT

2013-06-13 10:14:33

2011-05-23 17:30:52

Ubuntu 11.1

2011-05-23 10:29:31

Fedora 15

2021-09-16 19:19:00

Windows 11操作系統(tǒng)微軟
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久久久久久久 | 欧美日韩不卡合集视频 | 亚洲精品91| 久久久久高清 | 欧美aⅴ片| 99亚洲视频| 国产成人精品一区二区 | 激情五月婷婷 | 亚洲一区二区三区视频在线 | 日本精品一区二区三区视频 | 范冰冰一级做a爰片久久毛片 | 九九久久精品 | 欧美日韩综合 | 一区二区国产精品 | 欧美综合一区二区 | 国产一级片在线播放 | 在线播放一区二区三区 | 久久国产激情视频 | 福利久久 | 久久久999免费视频 999久久久久久久久6666 | 国产视频一区在线 | 国产片侵犯亲女视频播放 | 久久久久久黄 | 亚洲国产成人在线 | 爽爽免费视频 | av色噜噜 | 二区在线视频 | 天天色影视综合 | 国内av在线 | 暴草美女| 日韩二三区 | 99一区二区 | 日韩伦理一区二区 | 亚洲精品一区二区三区丝袜 | 欧美一级久久 | 久久看片 | 我爱操 | 久草网址 | 国产精品视频久久久 | 国产成人免费 | 国产精品久久国产精品久久 |