溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JDK13新特性有哪些

發(fā)布時(shí)間:2021-12-17 13:57:06 來(lái)源:億速云 閱讀:104 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)JDK13新特性有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1、switch優(yōu)化更新

      JDK11以及之前的版本:

switch (day) {
    case MONDAY: 
    case FRIDAY:
    case SUNDAY:
         System.out.println(6); 
         break; 
    case TUESDAY: 
        System.out.println(7); 
        break; case THURSDAY: 
    case SATURDAY: 
        System.out.println(8);
         break; 
    case WEDNESDAY:
         System.out.println(9);
         break; 
}

       JDK12版本

switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); 
    case TUESDAY -> System.out.println(7); 
    case THURSDAY, SATURDAY -> System.out.println(8); 
    case WEDNESDAY -> System.out.println(9);
 }

      JDK13版本

static void howMany(int k) {
    System.out.println(        switch (k) {            case  1 -> "one"
            case  2 -> "two"
            default -> "many"
        }
    );}
2、文本塊升級(jí)

      2.1、html例子

      JDK13之前

String html = "<html>\n" +              "    <body>\n" +              "        <p>Hello, world</p>\n" +              "    </body>\n" +              "</html>\n";

      JDK13優(yōu)化的:

String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

      2.2、SQL變化

      JDK13之前

String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" +
               "WHERE `CITY` = 'INDIANAPOLIS'\n" +
               "ORDER BY `EMP_ID`, `LAST_NAME`;\n";

      JDK13

String query = """    
                SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
                WHERE `CITY` = 'INDIANAPOLIS'                ORDER BY `EMP_ID`, `LAST_NAME`;
               """;

      2.3、解釋

      文本塊

"""
line 1
line 2
line 3
"""

      相當(dāng)于字符串文字:

"line 1\nline 2\nline 3\n"
3、動(dòng)態(tài)CDS檔案

    目標(biāo):

提高應(yīng)用程序類 - 數(shù)據(jù)共享(AppCDS)的可用性。消除了用戶進(jìn)行試運(yùn)行以創(chuàng)建每個(gè)應(yīng)用程序的類列表的需要。-Xshare:dump使用類列表由該選項(xiàng)啟用的靜態(tài)歸檔應(yīng)繼續(xù)工作。這包括內(nèi)置類加載器和用戶定義的類加載器的類。
4、取消使用未使用的內(nèi)存

      摘要:

  增強(qiáng)ZGC以將未使用的堆內(nèi)存返回給操作系統(tǒng)。

      動(dòng)機(jī):

    ZGC目前沒(méi)有取消提交并將內(nèi)存返回給操作系統(tǒng),即使該內(nèi)存長(zhǎng)時(shí)間未使用。對(duì)于所有類型的應(yīng)用程序和環(huán)境,此行為并非最佳,
尤其是那些需要關(guān)注內(nèi)存占用的應(yīng)用程序和環(huán)境 例如:通過(guò)使用支付資源的容器環(huán)境。應(yīng)用程序可能長(zhǎng)時(shí)間處于空閑狀態(tài)并與許多其
他應(yīng)用程序共享或競(jìng)爭(zhēng)資源的環(huán)境。應(yīng)用程序在執(zhí)行期間可能具有非常不同的堆空間要求。
    例如,啟動(dòng)期間所需的堆可能大于穩(wěn)態(tài)執(zhí)行期間稍后所需的堆。HotSpot中的其他垃圾收集器,如G1和Shenandoah,今天提供
了這種功能,某些類別的用戶發(fā)現(xiàn)它非常有用。將此功能添加到ZGC將受到同一組用戶的歡迎。
5、重新實(shí)現(xiàn)舊版套接字API    

      摘要:

    使用更簡(jiǎn)單,更現(xiàn)代的實(shí)現(xiàn)替換java.net.Socket和java.net.ServerSocketAPI 使用的底層實(shí)現(xiàn),易于維護(hù)和調(diào)試。新的實(shí)
現(xiàn)很容易適應(yīng)用戶模式線程,也就是光纖,目前正在Project Loom中進(jìn)行探索。

      動(dòng)機(jī):

    在java.net.Socket和java.net.ServerSocketAPI,以及它們的底層實(shí)現(xiàn),可以追溯到JDK 1.0。實(shí)現(xiàn)是遺留Java和C代
碼的混合,維護(hù)和調(diào)試很痛苦。該實(shí)現(xiàn)使用線程堆棧作為I/O緩沖區(qū),這種方法需要多次增加默認(rèn)線程堆棧大小。該實(shí)現(xiàn)使用本機(jī)數(shù)據(jù)
結(jié)構(gòu)來(lái)支持異步關(guān)閉,這是多年來(lái)微妙可靠性和移植問(wèn)題的根源。該實(shí)現(xiàn)還有幾個(gè)并發(fā)問(wèn)題,需要進(jìn)行大修才能正確解決。在未來(lái)的光
纖世界環(huán)境中,而不是在本機(jī)方法中阻塞線程,當(dāng)前的實(shí)現(xiàn)不適用于目的。加q群:478052716 免費(fèi)領(lǐng)?。↗ava架構(gòu)資料,視頻資料,BATJ面試資料)
6、FileSystems.newFileSystem新方法

      核心庫(kù)/ java.nio中添加了FileSystems.newFileSystem(Path,Map <String,?>)方法 

      添加了三種新方法java.nio.file.FileSystems,以便更輕松地使用將文件內(nèi)容視為文件系統(tǒng)的文件系統(tǒng)提供程序。

1、newFileSystem(Path)2、newFileSystem(Path, Map<String, ?>)3、newFileSystem(Path, Map<String, ?>, ClassLoader)    添加為newFileSystem(Path, Map<String, ?>) 已使用現(xiàn)有2-arg newFileSystem(Path, ClassLoader)并指定類加載器
的代碼創(chuàng)建源(但不是二進(jìn)制)兼容性問(wèn)題。null.例如,由于引用newFileSystem不明確,因此無(wú)法編譯以下內(nèi)容:    FileSystem fs = FileSystems.newFileSystem(path, null);為了避免模糊引用,需要修改此代碼以將第二個(gè)參數(shù)強(qiáng)制轉(zhuǎn)換為java.lang.ClassLoader。
7、nio新方法

      核心庫(kù)/ java.nio中新的java.nio.ByteBuffer批量獲取/放置方法轉(zhuǎn)移字節(jié)而不考慮緩沖區(qū)位置。

    java.nio.ByteBufferjava.nio現(xiàn)在,其他緩沖區(qū)類型定義絕對(duì)批量get和put傳輸連續(xù)字節(jié)序列的方法,而不考慮或影響緩沖
區(qū)位置。
8、核心庫(kù)/ java.time
    新日本時(shí)代名稱Reiwa,此更新中添加了代表新Reiwa時(shí)代的實(shí)例。與其他時(shí)代不同,這個(gè)時(shí)代沒(méi)有公共領(lǐng)域。它可以通過(guò)調(diào)用JapaneseEra.of(3)或獲得JapaneseEra.valueOf("Reiwa")。JDK13及更高版本將有一個(gè)新的公共領(lǐng)域來(lái)代表這個(gè)時(shí)代。    NewEra從2019年5月1日開(kāi)始的日本時(shí)代的占位符名稱“ ”已被新的官方名稱取代。依賴占位符名稱(請(qǐng)參閱JDK-8202088)獲
取新時(shí)代單例(JapaneseEra.valueOf("NewEra"))的應(yīng)用程序?qū)⒉辉倨鹱饔?。?qǐng)參閱JDK-8205432
9、核心庫(kù)/ java.util中:I18N

      支持Unicode 12.1,此版本將Unicode支持升級(jí)到12.1,其中包括以下內(nèi)容:

    java.lang.Character支持12.1級(jí)的Unicode字符數(shù)據(jù)庫(kù),其中12.0從11.0開(kāi)始增加554個(gè)字符,總共137,928個(gè)
字符。這些新增內(nèi)容包括4個(gè)新腳本,總共150個(gè)腳本,以及61個(gè)新的表情符號(hào)字符。U+32FF SQUARE ERA NAME REIWA從
12.0開(kāi)始,12.1只添加一個(gè)字符。java.text.Bidi和java.text.Normalizer類分別支持12.0級(jí)的Unicode標(biāo)準(zhǔn)附件,
#9和#15。java.util.regexpackage支持基于12.0級(jí)Unicode標(biāo)準(zhǔn)附件#29的擴(kuò)展字形集群。
10、熱點(diǎn)/ GC
    10.1 JEP 351 ZGC取消提交未使用的存儲(chǔ)器 
    10.2 添加了-XXSoftMaxHeapSize標(biāo)志
    10.3 ZGC支持的最大堆大小從4TB增加到16TB
11、安全庫(kù)/ java.security
    11.1 該com.sun.security.crl.readtimeout系統(tǒng)屬性設(shè)置為CRL檢索的最大讀取超時(shí),單位為秒。如果尚未設(shè)置該屬性,
或者其值為負(fù),則將其設(shè)置為默認(rèn)值15秒。值0表示無(wú)限超時(shí)。
    11.2 新的keytool -showinfo -tls用于顯示TLS配置信息的命令keytool -showinfo -tls添加了一個(gè)顯示TLS配置信
息的新命令。    11.3 SunMSCAPI提供程序現(xiàn)在支持以下一代加密(CNG)格式讀取私鑰。這意味著CNG格式的RSA和EC密鑰可從Windows密鑰
庫(kù)加載,例如“Windows-MY”。與EC(簽名算法SHA1withECDSA,SHA256withECDSA等等)也支持。
12、刪除功能

      刪除的部分功能:

    12.1 核心庫(kù)/java.net中,不再支持Pre-JDK 1.4 SocketImpl實(shí)現(xiàn)java.net.SocketImpl此版本已刪除對(duì)為JavaSE1.3及更早版本編譯的自定義實(shí)現(xiàn)的支持。此更改對(duì)SocketImpl為Java SE 1.4(2002年發(fā)布)或更新版本編譯
的實(shí)現(xiàn)沒(méi)有影響。    12.2 核心庫(kù)/java.lang中,刪除運(yùn)行時(shí)跟蹤方法,過(guò)時(shí)的方法traceInstructions(boolean),并traceMethodCalls(boolean)已經(jīng)從刪除java.lang.Runtime類。這些方法對(duì)許多版本都不起作用,它們
的預(yù)期功能由Java虛擬機(jī)工具接口(JVMTI)提供。

關(guān)于“JDK13新特性有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jdk
AI