欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

JEP 400

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

JEP 408

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

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

JEP 413

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

它可以內(nèi)聯(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

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

JEP 418

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

JEP 419

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

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

JEP 420

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

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

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

我們使用instanceof后無需再對(duì)對(duì)象進(jìn)行類型轉(zhuǎn)換就可以使用其真實(shí)的類型。

Java 14又引入了switch表達(dá)式:

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

如果這兩個(gè)能結(jié)合起來,switch能進(jìn)行模式匹配的話,下面的句子將大大簡化:

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的預(yù)覽特性,將會(huì)把上面冗長的代碼簡化為:

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對(duì)象有一個(gè)finalize方法,該方法用于實(shí)例被垃圾回收器回收的時(shí)觸發(fā)的操作。當(dāng) GC (垃圾回收器) 確定不存在對(duì)該對(duì)象的有更多引用時(shí),對(duì)象的垃圾回收器就會(huì)調(diào)用這個(gè)方法。當(dāng)時(shí)它的設(shè)計(jì)用來避免內(nèi)存泄露,現(xiàn)在已經(jīng)有了更好的替代方案try-with-resources和Java 9引入的 java.lang.ref.Cleaner 。

因此,所有該方法會(huì)被標(biāo)記為過時(shí),未來將被移除。

總結(jié)

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

以上就是Java 8加java10等于Java18版本要點(diǎn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Java8java10等于Java18版本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis的update更新批量與普通解決方式對(duì)比

    Mybatis的update更新批量與普通解決方式對(duì)比

    這篇文章主要為大家介紹了Mybatis的update更新批量與普通解決方式對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Springboot傳參詳解

    Springboot傳參詳解

    這篇文章主要介紹了Springboot傳參的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • SpringBoot 創(chuàng)建web項(xiàng)目并部署到外部Tomcat

    SpringBoot 創(chuàng)建web項(xiàng)目并部署到外部Tomcat

    本篇文章主要介紹了SpringBoot 創(chuàng)建web項(xiàng)目并部署到外部Tomcat,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 使用IDEA查看jar包及jar包的正確打開方式

    使用IDEA查看jar包及jar包的正確打開方式

    IDEA 是把 jar 包添加為 Libraries,然后展開后即可查看,因?yàn)槭蔷幾g后的 class 文件,所以注釋是沒有的,今天小編給大家介紹下使用IDEA查看jar包及jar包的正確打開方式,感興趣的朋友一起看看吧
    2023-07-07
  • IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法

    IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法

    這篇文章主要介紹了IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • Java 截取視頻資料中的某一幀作為縮略圖

    Java 截取視頻資料中的某一幀作為縮略圖

    最近項(xiàng)目中有一個(gè)需求,就是Java 截取視頻資料中的某一幀作為縮略圖,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細(xì)介紹

    SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細(xì)介紹

    我們第一個(gè)關(guān)注的類就是DispatcherHandler,這個(gè)類提供的handle()方法,封裝了我們之后所有的handlerMappings,這個(gè)DispatcherHandler有點(diǎn)想SpringMVC的DispatchServlet,里面也是封裝了請(qǐng)求和對(duì)應(yīng)的處理方法的關(guān)系
    2022-10-10
  • Java中的異常Exception詳細(xì)解析

    Java中的異常Exception詳細(xì)解析

    這篇文章主要介紹了Java中的異常Exception詳細(xì)解析,Java語言中,將程序執(zhí)行中發(fā)生的不正常情況稱為"異常",(開發(fā)過程中的語法錯(cuò)誤和邏輯錯(cuò)誤不是異常),異常分為兩大類,運(yùn)行時(shí)異常和編譯時(shí)異常,需要的朋友可以參考下
    2024-01-01
  • Java 數(shù)組差集實(shí)例代碼

    Java 數(shù)組差集實(shí)例代碼

    這篇文章主要介紹了Java 數(shù)組差集實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • spring 操作elasticsearch查詢使用方法

    spring 操作elasticsearch查詢使用方法

    本篇文章主要介紹了spring 操作elasticsearch使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評(píng)論