最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8加java10等于Java18的版本查看及特性詳解

 更新時間:2022年06月14日 09:03:21   作者:碼農小胖哥  
這篇文章主要為大家介紹了Java?8加java10等于Java18的各個版本要點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

Java 18正式發(fā)布, 雖然它不是長期支持 (LTS) 版本,但它卻實現(xiàn)了九個 JEP(在Java 18列出)。有哪些特性值得關注呢?

JEP 400

將 UTF-8 指定為標準 Java API 的默認字符集。通過此更改,依賴于默認字符集的 API 將在所有實現(xiàn)、操作系統(tǒng)、語言環(huán)境和配置中保持一致。

JEP 408

Java內部終于有原生的Web服務器了。但是請注意它沒有可用的 CGI 或類似 Servlet 的功能。該工具可用于原型設計、臨時編碼和測試目的,尤其是在教育環(huán)境中。

它并不是Jetty、Apache Tomcat等產品的競品,也無法而且不推薦在生產環(huán)境中使用。僅僅是提供一個命令行工具來輔助幫助開發(fā)人員設計、測試、教學。

JEP 413

支持在Java API文檔中使用代碼片段。以前在Java代碼的注釋中如果要寫一些樣例非常麻煩,甚至還要進行字符轉義。現(xiàn)在Java注釋引入了一個新的標記 @snippet 來解決注釋中包含代碼片段樣例的問題。

它可以內聯(lián)使用:

/**
 * The following code shows how to use {@code Optional.isPresent}:
 * {@snippet :
 * if (v.isPresent()) {
 *     System.out.println("v: " + v.get());
 * }
 * }
 */

也可以引用外部片段:

/**
 * The following code shows how to use {@code Optional.isPresent}:
 * {@snippet file="ShowOptional.java" region="example"}
 */

ShowOptional.java就是它引用的源代碼:

public class ShowOptional {
    void show(Optional<String> v) {
        // @start region="example"
        if (v.isPresent()) {
            System.out.println("v: " + v.get());
        }
        // @end
    }
}

JEP 417

引入一個 API 來表達向量計算,該計算可以在運行時可靠地編譯為支持的 CPU 架構上的最佳向量指令,從而實現(xiàn)優(yōu)于等效標量計算的性能。 目前是第三次孵化。

JEP 418

為主機名和地址解析定義服務提供者接口 (SPI),以便java.net.InetAddress可以使用平臺內置解析器以外的解析器。 這個對于互聯(lián)網一些協(xié)議的接入提供了入口,同時你也可以對現(xiàn)有方案進行一些改進和定制。

JEP 419

Foreign Function & Memory API ( JEP 419 ) 是此版本中實現(xiàn)的更重要的 JEP 之一,因為它是Project Panama中包含的孵化組件之一。 Panama 正在簡化將 Java 程序連接到非 Java 組件的過程。這一特殊功能在其第二次孵化迭代中引入了一個 API,Java 程序通過該 API 調用Native類庫并處理Native數(shù)據(jù)。目的是取代設計的非常不理想的Java Native Interface (JNI)。

大家都知道其它語言有非常棒的一些類庫,但是Java想調用其它語言的類庫目前需要使用JNI。但是JNI被設計得太復雜了,讓很多Java開發(fā)者難以上手。如果這一狀況得到改變,那么利用Java去調用一些C或者C++音視頻處理庫和Python的機器學習庫將是非常容易的事情。

JEP 420

實現(xiàn)的唯一真正影響 Java 語言的 JEP 是Pattern Matching for switch ( JEP 420 ),它在 Java 17 中首次預覽(這是第二次預覽)。其目的是“通過對switch 表達式和語句的模式匹配以及對模式語言的擴展來增強 Java 編程語言 。在 Java 16 中,JEP 394擴展了instanceof運算符以采用類型模式并執(zhí)行模式匹配:

// Old code
if (o instanceof String) {
    String s = (String)o;
    ... use s ...
}

// New code
if (o instanceof String s) {
    ... use s ...
}

我們使用instanceof后無需再對對象進行類型轉換就可以使用其真實的類型。

Java 14又引入了switch表達式:

int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY                -> 7;
    case THURSDAY, SATURDAY     -> 8;
    case WEDNESDAY              -> 9;
    default                     -> 11;    
};

如果這兩個能結合起來,switch能進行模式匹配的話,下面的句子將大大簡化:

static String formatter(Object o) {
    String formatted = "unknown";
    if (o instanceof Integer i) {
        formatted = String.format("int %d", i);
    } else if (o instanceof Long l) {
        formatted = String.format("long %d", l);
    } else if (o instanceof Double d) {
        formatted = String.format("double %f", d);
    } else if (o instanceof String s) {
        formatted = String.format("String %s", s);
    }
    return formatted;
}

JEP 420的預覽特性,將會把上面冗長的代碼簡化為:

static String formatterPatternSwitch(Object o) {
    return switch (o) {
        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        -> o.toString();
    };
}

是不是更加清晰了呢?

JEP 421

Object對象有一個finalize方法,該方法用于實例被垃圾回收器回收的時觸發(fā)的操作。當 GC (垃圾回收器) 確定不存在對該對象的有更多引用時,對象的垃圾回收器就會調用這個方法。當時它的設計用來避免內存泄露,現(xiàn)在已經有了更好的替代方案try-with-resources和Java 9引入的 java.lang.ref.Cleaner 。

因此,所有該方法會被標記為過時,未來將被移除。

總結

很少有人在生產中使用 JDK 18,因為它不是 LTS 版本。去年九月發(fā)布JDK 17 LTS 版本更為重要,很多類庫,特別是Spring framework 6.0和Spring Boot 3.0 都將基于JDK17,你還要在Java 8堅持多久呢?已經相差了10個版本了。下一個是LTS是 2023 年 9 月的 Java 21。

以上就是Java 8加java10等于Java18版本要點詳解的詳細內容,更多關于Java8java10等于Java18版本的資料請關注腳本之家其它相關文章!

相關文章

  • JDK21無法導入TimeUnit類的解決辦法

    JDK21無法導入TimeUnit類的解決辦法

    這篇文章主要給大家介紹了關于JDK21無法導入TimeUnit類的解決辦法,TimeUnit是java.util.concurrent包下面的一個類,TimeUnit提供了可讀性更好的線程暫停操作,通常用來替換Thread.sleep(),需要的朋友可以參考下
    2024-01-01
  • java實現(xiàn)簡單石頭剪刀布游戲

    java實現(xiàn)簡單石頭剪刀布游戲

    這篇文章主要介紹了java實現(xiàn)簡單石頭剪刀布游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Java設計模式之命令模式

    Java設計模式之命令模式

    這篇文章介紹了Java設計模式之命令模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • IDEA利用jclasslib 修改class文件的實現(xiàn)

    IDEA利用jclasslib 修改class文件的實現(xiàn)

    這篇文章主要介紹了IDEA利用jclasslib 修改class文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • java中使用雙向鏈表實現(xiàn)貪吃蛇程序源碼分享

    java中使用雙向鏈表實現(xiàn)貪吃蛇程序源碼分享

    這篇文章主要介紹了java中使用雙向鏈表實現(xiàn)貪吃蛇程序源碼分享,本文直接給出了實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • Spring-IOC容器-Bean管理-基于XML方式超詳解

    Spring-IOC容器-Bean管理-基于XML方式超詳解

    這篇文章主要介紹了Spring為IOC容器Bean的管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • MybatisPlus使用注解的多對多級聯(lián)查詢方式

    MybatisPlus使用注解的多對多級聯(lián)查詢方式

    這篇文章主要介紹了MybatisPlus使用注解的多對多級聯(lián)查詢方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java遍歷字符串和統(tǒng)計字符個數(shù)的操作方法

    Java遍歷字符串和統(tǒng)計字符個數(shù)的操作方法

    這篇文章主要介紹了Java遍歷字符串和統(tǒng)計字符個數(shù)的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • SpringBoot讀寫操作yml配置文件方法

    SpringBoot讀寫操作yml配置文件方法

    之前一直用的application.properties配置文件,只能是KV結構,后來的yml配置文件更像是樹狀結構,支持層級,比properties更靈活
    2023-01-01
  • 實現(xiàn)java文章點擊量記錄實例

    實現(xiàn)java文章點擊量記錄實例

    這篇文章主要為大家介紹了實現(xiàn)java文章點擊量記錄實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論

象州县| 增城市| 宜川县| 城步| 申扎县| 普兰县| 娱乐| 霍邱县| 呈贡县| 清新县| 金溪县| 左云县| 灵丘县| 潍坊市| 肥城市| 吉木乃县| 福州市| 施甸县| 台北市| 东海县| 呼玛县| 林口县| 吉首市| 瑞昌市| 汝南县| 文登市| 金山区| 疏附县| 泽州县| 察雅县| 广东省| 大名县| 梨树县| 满洲里市| 凤凰县| 陈巴尔虎旗| 广安市| 任丘市| 延川县| 平潭县| 和静县|