国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一文詳解|從 JDK8 飛升到 JDK17,再到未來(lái)的 JDK21

這篇具有很好參考價(jià)值的文章主要介紹了一文詳解|從 JDK8 飛升到 JDK17,再到未來(lái)的 JDK21。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


?? Java Development Kit (JDK) 特性一覽


?? JDK 8


  • ?? Lambda 表達(dá)式和函數(shù)式接口

    • 定義:允許將函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù))或?qū)⒋a作為數(shù)據(jù)(函數(shù)作為值)。
    • 示例(a, b) -> a + b
  • ?? 類型注解

    • 定義:提供了在任何使用類型的地方添加注解的能力。
    • 示例@NonNull String name;
  • ?? 新的日期/時(shí)間 API

    • 定義:全新的API,用于日期和時(shí)間的操作,替代舊的DateCalendar。
    • 示例LocalDate.now();
  • ?? 默認(rèn)方法和靜態(tài)方法

    • 定義:允許在接口中定義有具體實(shí)現(xiàn)的方法,不破壞與舊版本的兼容性。
    • 示例default void show() { System.out.println("Default Method"); }
  • ?? Stream API

    • 定義:新的抽象,允許以函數(shù)式方式處理數(shù)據(jù)序列。
    • 示例list.stream().filter(x -> x > 5).collect(Collectors.toList());
  • ?? Nashorn JavaScript 引擎

    • 定義:一個(gè)新的JavaScript引擎,用于在Java應(yīng)用程序中執(zhí)行JavaScript代碼。
    • 示例ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
  • ?? 類加載器改進(jìn)

    • 定義:對(duì)類加載器進(jìn)行的一系列改進(jìn),提高其性能和靈活性。
    • 示例:使用ClassLoader的新方法和改進(jìn)。
  • ?? 并行數(shù)組操作

    • 定義:提供并行處理數(shù)組的能力,利用多核處理器的優(yōu)勢(shì)。
    • 示例Arrays.parallelSort(myArray);
  • ?? 改進(jìn)的線程局部變量

    • 定義:對(duì)ThreadLocal類的增強(qiáng),以更高效地存儲(chǔ)線程特定的數(shù)據(jù)。
    • 示例ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
  • ?? Optional 類型

    • 定義:一個(gè)可以包含或不包含值的容器對(duì)象,可以有效地表示“值或無(wú)值”并避免null。
    • 示例Optional<String> optional = Optional.of("test");

?? JDK 9


  • ?? Jigsaw 模塊化系統(tǒng) (JPMS)

    • 定義:為Java引入的模塊系統(tǒng),允許將應(yīng)用程序或庫(kù)劃分為不同的模塊。
    • 示例module com.myapp { requires java.base; }
  • ?? 鉆石操作符的適用范圍擴(kuò)展

    • 定義:允許在匿名內(nèi)部類中使用鉆石操作符,使代碼更簡(jiǎn)潔。
    • 示例Handler<String> handler = new Handler<>() { /*...*/ };
  • ?? 接口私有方法

    • 定義:在接口中定義私有方法,幫助組織方法實(shí)現(xiàn),而不暴露給外部。
    • 示例interface MyInterface { private void myPrivateMethod() { /*...*/ } }
  • ?? 改進(jìn)的 try-with-resources 語(yǔ)句

    • 定義:允許在try-with-resources語(yǔ)句中引用在外部聲明的final或effectively final變量。
    • 示例
      final Resource resource = new Resource();
      try (resource) { /*...*/ }
    
  • ?? 改進(jìn)的 Optional 類型

    • 定義:為Optional添加了新的有用的方法。
    • 示例optional.orElseThrow();
  • ?? 改進(jìn)的 Stream API

    • 定義:為Stream添加了新的方法和特性。
    • 示例list.stream().takeWhile(x -> x < 5).collect(Collectors.toList());
  • ?? 集合工廠方法

    • 定義:簡(jiǎn)潔的方法創(chuàng)建不可變集合。
    • 示例List<String> list = List.of("A", "B", "C");
  • ?? Flow API

    • 定義:定義了發(fā)布-訂閱框架的標(biāo)準(zhǔn)。
    • 示例:使用Flow.Publisher, Flow.Subscriber等進(jìn)行響應(yīng)式編程。
  • ?? 改進(jìn)的 Javadoc

    • 定義:Javadoc工具的改進(jìn),包括更好的HTML5支持和搜索功能。
    • 示例:生成的Javadoc頁(yè)面中的搜索框。
  • ?? 改進(jìn)的 Process API

    • 定義:改進(jìn)的API,用于管理和控制操作系統(tǒng)進(jìn)程。
    • 示例ProcessHandle.current().pid();
  • ?? 改進(jìn)的 HTTP/2 客戶端

    • 定義:引入了新的HTTP/2客戶端API,替代HttpURLConnection。
    • 示例:使用HttpClient, HttpRequest, HttpResponse進(jìn)行HTTP請(qǐng)求。

?? JDK 10


  • ??? 局部變量類型推斷

    • 定義:允許Java編譯器推斷局部變量的類型,使代碼更簡(jiǎn)潔。
    • 示例var list = new ArrayList<String>();
  • ?? 并行全垃圾回收器

    • 定義:并行GC的改進(jìn),使其能夠在Full GC階段并行處理。
    • 示例:在JVM啟動(dòng)參數(shù)中使用-XX:+UseParallelGC
  • ?? 應(yīng)用類數(shù)據(jù)共享

    • 定義:允許應(yīng)用程序之間共享類元數(shù)據(jù),以減少啟動(dòng)時(shí)間和JVM內(nèi)存使用。
    • 示例:在JVM啟動(dòng)參數(shù)中使用-XX:+UseAppCDS
  • ?? 基于時(shí)間的版本控制

    • 定義:新的版本命名策略,基于時(shí)間而不是任意命名。
    • 示例:使用如10.2018.04這樣的版本號(hào)。

?? JDK 11


  • ?? HTTP/2 客戶端增強(qiáng)

    • 定義:HTTP/2的正式客戶端,代替JDK 9中的試驗(yàn)版本。
    • 示例:使用HttpClient, HttpRequest, 和HttpResponse進(jìn)行HTTP/2請(qǐng)求。
  • ?? 單元測(cè)試框架 JUnit 5

    • 定義:新的單元測(cè)試框架,提供了許多新特性和改進(jìn)。
    • 示例@TestAssertions.assertEquals(expected, actual);
  • ?? ZGC 垃圾回收器

    • 定義:一個(gè)可擴(kuò)展的低延遲垃圾回收器。
    • 示例:在JVM啟動(dòng)參數(shù)中使用-XX:+UseZGC。
  • ?? 改進(jìn)的啟動(dòng)器

    • 定義:允許直接運(yùn)行源代碼文件,無(wú)需先編譯。
    • 示例:運(yùn)行java MyFile.java直接執(zhí)行Java源代碼。
  • ?? Unicode 10.0 支持

    • 定義:支持最新的Unicode標(biāo)準(zhǔn),增加了新的字符集。
  • ?? 原生 TLS 1.3 支持

    • 定義:增加了對(duì)最新的安全傳輸層協(xié)議的支持。
  • ?? 改進(jìn)的 Epsilon 垃圾回收器

    • 定義:一個(gè)不做任何內(nèi)存回收的垃圾回收器,主要用于性能測(cè)試。
    • 示例:在JVM啟動(dòng)參數(shù)中使用-XX:+UseEpsilonGC

?? JDK 12


  • ?? Shenandoah 垃圾回收器

    • 定義:一個(gè)低延遲的并發(fā)垃圾回收器。
    • 示例:在JVM啟動(dòng)參數(shù)中使用-XX:+UseShenandoahGC。
  • ?? 默認(rèn) CDS 歸檔

    • 定義:提高啟動(dòng)速度通過(guò)默認(rèn)的類數(shù)據(jù)共享歸檔。
    • 示例:使用JVM參數(shù)-Xshare:auto。
  • ?? 增強(qiáng)的 Switch 語(yǔ)句

    • 定義:為Switch語(yǔ)句添加多值情況和其他增強(qiáng)功能。
    • 示例switch (day) { case MONDAY, TUESDAY -> System.out.println("Early week"); }
  • ?? 改進(jìn)的 G1 清理階段

    • 定義:優(yōu)化G1垃圾回收器的清理階段,提高性能。
  • ?? 改進(jìn)的 AArch64 處理器支持

    • 定義:增強(qiáng)了對(duì)AArch64架構(gòu)的支持和優(yōu)化。

?? JDK 13


  • ?? 改進(jìn)的 Switch 表達(dá)式

    • 定義:Switch表達(dá)式的進(jìn)一步改進(jìn),提供更簡(jiǎn)潔的語(yǔ)法。
    • 示例int num = switch (day) { case MONDAY -> 1; case TUESDAY -> 2; };
  • ?? Text Blocks

    • 定義:允許多行字符串,使字符串字面值更加簡(jiǎn)潔。
    • 示例
      String text = """
        Line 1
        Line 2
        Line 3
      """;
    
  • ?? ZGC 調(diào)整策略

    • 定義:ZGC的優(yōu)化和調(diào)整,以更好地應(yīng)對(duì)不同的工作負(fù)載。
  • ?? 通過(guò) JVM 選項(xiàng)打印垃圾回收事件

    • 定義:更詳細(xì)的垃圾回收日志選項(xiàng),幫助調(diào)試和性能分析。
  • ?? ZGC 和 Shenandoah 增加副本數(shù)

    • 定義:這兩種垃圾回收器的改進(jìn),以提高效率和吞吐量。

?? JDK 14


  • ?? Switch 表達(dá)式增強(qiáng)

    • 定義:進(jìn)一步的Switch表達(dá)式增強(qiáng),使其更加功能強(qiáng)大和靈活。
  • ??? 簡(jiǎn)化的局部變量類型推斷

    • 定義:進(jìn)一步簡(jiǎn)化了局部變量的類型推斷,使代碼更加簡(jiǎn)潔。
  • ? 特定的 NullPointerException 堆棧跟蹤

    • 定義:當(dāng)發(fā)生NullPointerException時(shí),提供更詳細(xì)的信息來(lái)確定問(wèn)題的來(lái)源。
  • ?? Pattern Matching for instanceof

    • 定義:簡(jiǎn)化了instanceof操作的類型檢查和類型轉(zhuǎn)換。
    • 示例if (obj instanceof String s) { System.out.println(s.length()); }
  • ?? 雙倍精度浮點(diǎn)數(shù)和整數(shù)算術(shù)操作 API

    • 定義:新增的API,支持大數(shù)字的浮點(diǎn)和整數(shù)運(yùn)算。
    • 示例:使用Math.multiplyExact, Math.addExact等方法。

?? JDK 15


  • ?? 全局垃圾收集器

    • 定義:一個(gè)實(shí)驗(yàn)性的垃圾收集器,旨在為所有內(nèi)存分配提供低延遲。
  • ?? 改進(jìn)的 G1 垃圾回收器

    • 定義:對(duì)G1垃圾回收器的繼續(xù)改進(jìn),提高其性能和效率。
  • ?? 簡(jiǎn)化的元注解語(yǔ)法

    • 定義:提供了一種簡(jiǎn)化的方式來(lái)指定注解的目標(biāo)類型。
    • 示例@Target(TYPE_USE) @interface NonNull {}
  • ?? Records 類型(預(yù)覽功能)

    • 定義:為簡(jiǎn)單的數(shù)據(jù)傳輸對(duì)象提供一個(gè)簡(jiǎn)潔的語(yǔ)法。
    • 示例record Point(int x, int y) {}
  • ?? 改進(jìn)的 ZGC

    • 定義:對(duì)ZGC垃圾收集器的進(jìn)一步優(yōu)化和改進(jìn)。

?? JDK 16


  • ?? 更好的垃圾回收日志信息

    • 定義:增強(qiáng)了垃圾回收日志的詳細(xì)度和可讀性。
  • ?? 改進(jìn)的 Vector API

    • 定義:為SIMD硬件指令提供了Java API,允許更高效的并行計(jì)算。
    • 示例:使用Vector類進(jìn)行并行操作。
  • ?? 操作系統(tǒng)信息訪問(wèn) API

    • 定義:提供API來(lái)查詢和訪問(wèn)操作系統(tǒng)的詳細(xì)信息。
    • 示例:使用OperatingSystemMXBean。
  • ?? 優(yōu)化的方法/調(diào)用 API

    • 定義:改進(jìn)的方法調(diào)用API,提供更高的性能和靈活性。
  • ?? 改進(jìn)的 AES 密碼算法實(shí)現(xiàn)

    • 定義:提供了更高效的AES加密和解密實(shí)現(xiàn)。

?? JDK 17


  • ?? 嵌套的代碼塊作用域

    • 定義:允許在單個(gè)方法或代碼塊中定義多個(gè)嵌套的作用域。
    • 示例
      {
          int x = 10;
          {
              int y = 5;
              System.out.println(x + y);
          }
      }
    
  • ?? 自定義的垃圾回收器策略

    • 定義:允許開(kāi)發(fā)者使用自定義的垃圾回收策略。
  • ?? 支持 C++ 14 語(yǔ)言特性

    • 定義:JVM的內(nèi)部代碼現(xiàn)在可以使用C++ 14的語(yǔ)言特性。
  • ?? 改進(jìn)的弱引用

    • 定義:對(duì)WeakReference類的改進(jìn),使其更加高效。
  • ?? 改進(jìn)的 ZGC 和 Shenandoah 垃圾回收器

    • 定義:對(duì)這兩個(gè)垃圾回收器的進(jìn)一步優(yōu)化和改進(jìn)。

?? JDK 18


  • ?? 增強(qiáng)的垃圾回收器接口

    • 定義:提供了更加靈活和強(qiáng)大的垃圾回收器接口。
  • ?? 支持 Loom 協(xié)程的 JVM 機(jī)制

    • 定義:為Java引入的協(xié)程支持,提供輕量級(jí)的并發(fā)模型。
    • 示例:使用FiberFiberScope進(jìn)行協(xié)程編程。
  • ?? ZGC 和 Shenandoah 垃圾回收器進(jìn)一步改進(jìn)

    • 定義:對(duì)這兩個(gè)垃圾回收器的進(jìn)一步優(yōu)化。
  • ?? 底層 JVM 線程池的重新設(shè)計(jì)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796283.html

    • 定義:對(duì)JVM內(nèi)部線程池的架構(gòu)進(jìn)行的重大改進(jìn)。

到了這里,關(guān)于一文詳解|從 JDK8 飛升到 JDK17,再到未來(lái)的 JDK21的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mac卸載jdk8,安裝jdk17

    Mac卸載jdk8,安裝jdk17

    本次操作基于MacBook 因?yàn)楣ぷ餍枰?,需要將jdk版本由jdk8升級(jí)到j(luò)dk17,同一臺(tái)機(jī)器上是可以同時(shí)安裝多個(gè)版本的jdk的,但是為了避免一些沖突和未知問(wèn)題,這里直接卸載舊版本jdk,然后再重新安裝新版本。 先查看本機(jī)安裝的jdk: 刪除java運(yùn)行環(huán)境: 到j(luò)ava的目錄,用ls命令查看機(jī)

    2024年02月08日
    瀏覽(27)
  • JDK8-JDK17版本升級(jí)

    JDK8-JDK17版本升級(jí)

    記錄Records是添加到 Java 14 的一項(xiàng)新功能。它允許你創(chuàng)建用于存儲(chǔ)數(shù)據(jù)的類。它類似于 POJO 類,但代碼少得多;大多數(shù)開(kāi)發(fā)人員使用 Lombok 生成 POJO 類,但是有了記錄,你就不需要使用任何第三方庫(kù)。 sealed將類的繼承限制為一組有限的子類 密封類的子類可以聲明為fina

    2024年01月17日
    瀏覽(18)
  • JDK8和JDK17安裝切換,IDEA配置多個(gè)版本JDK

    JDK8和JDK17安裝切換,IDEA配置多個(gè)版本JDK

    JAVA之父高斯林推薦我們用JDK17,請(qǐng)盡快離開(kāi)JDK8。JDK17 LTS在每個(gè)維度上都是一個(gè)巨大的飛躍: 在Java 17正式發(fā)布之前,Java開(kāi)發(fā)框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3計(jì)劃在2022年第四季度實(shí)現(xiàn)總體可用性的高端基線: Java 17+(來(lái)自 Spring Framework 5.3.x 線中的 Java 8-17)

    2023年04月27日
    瀏覽(26)
  • java jdk8和jdk17同時(shí)存在【環(huán)境配置】

    java jdk8和jdk17同時(shí)存在【環(huán)境配置】

    jdk8:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html jdk17:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html PS:jdk8在下載結(jié)束,安裝的時(shí)候,需要有兩個(gè)文件分別是jre和jdk JRE: 是Java Runtime Environment,是java程序的運(yùn)行環(huán)境。既然是運(yùn)行,當(dāng)然要包含

    2024年02月07日
    瀏覽(31)
  • JDK8升級(jí)JDK17過(guò)程中遇到的那些坑

    JDK8雖然非常好,但是JDK版本已經(jīng)發(fā)布到JDK20了,且JDK8后的版本升級(jí)了很多新的特性,如模塊化、ZGC以及虛擬線程、結(jié)構(gòu)性并發(fā)等,也是非常有吸引力的,所以決定將基于JDK8的項(xiàng)目升級(jí)到最近的LTS版本JDK17。 下載JDK17的最新版本 jdk-17_linux-x64_bin.tar.gz ,解壓縮后移動(dòng)到 /usr/lib

    2024年02月11日
    瀏覽(17)
  • JDK8到JDK17有哪些吸引人的新特性?

    作者:京東零售?劉一達(dá) 2006年之后SUN公司決定將JDK進(jìn)行開(kāi)源,從此成立了OpenJDK組織進(jìn)行JDK代碼管理。任何人都可以獲取該源碼,并通過(guò)源碼構(gòu)建一個(gè)發(fā)行版發(fā)布到網(wǎng)絡(luò)上。但是需要一個(gè)組織審核來(lái)確保構(gòu)建的發(fā)行版是有效的, 這個(gè)組織就是JCP(Java Community Process)。2009年,SUN公

    2023年04月18日
    瀏覽(30)
  • 一次項(xiàng)目漏洞升級(jí)的過(guò)程(JDK8升級(jí)到JDK17)

    一次項(xiàng)目漏洞升級(jí)的過(guò)程(JDK8升級(jí)到JDK17)

    準(zhǔn)備工作: 第一步、漏洞掃描工具trivy; 第二步、掃描后的漏洞存在鏡像漏洞,中間件漏洞和代碼jar包漏洞; 第三步、區(qū)分對(duì)外和不對(duì)外的服務(wù),先更新對(duì)外服務(wù); 第四步、找出一個(gè)對(duì)外服務(wù)需要升級(jí)的jar 1、spring-web需要升級(jí)到6.x,spring-boot需要升級(jí)到3.x,JDK需要升級(jí)到J

    2024年01月20日
    瀏覽(22)
  • 如何在MAC M1上同時(shí)安裝JDK8和JDK17

    如何在MAC M1上同時(shí)安裝JDK8和JDK17

    筆者原先就在電腦上安裝了JDK8,由于需要用到MAT,MAT支持MAC m1的只兼容JDK17及以上的版本,故需安裝JDK17,特此記錄。 首先,從oracle官網(wǎng)下載JDK17:https://www.oracle.com/java/technologies/downloads/#java17 JDK默認(rèn)安裝在/Library/Java目錄下,打開(kāi)訪達(dá),通過(guò)shift+command+g直達(dá)文件,如果安裝成

    2024年02月15日
    瀏覽(25)
  • 【JDK】二、環(huán)境變量從jdk17切換為jdk8后不生效的解決辦法

    【JDK】二、環(huán)境變量從jdk17切換為jdk8后不生效的解決辦法

    在學(xué)習(xí)springboot3時(shí)配置了java17的環(huán)境變量,但平常工作中使用的還是java8,所以還需要再還原配置。 單還原環(huán)境變量配置后,使用 java -version 還是17的問(wèn)題。 重啟后輸入java-version 命令 任然 是java17,顯然是不對(duì)的 是因?yàn)槲覀冊(cè)诎惭b了jdk17后,默認(rèn)添加的17的環(huán)境變量配置,并且

    2024年02月07日
    瀏覽(26)
  • 關(guān)于老項(xiàng)目從JDK8升級(jí)到JDK17所需要注意的細(xì)節(jié)

    關(guān)于老項(xiàng)目從JDK8升級(jí)到JDK17所需要注意的細(xì)節(jié)

    這個(gè)是最簡(jiǎn)單的網(wǎng)上很多教程我這邊就不在重復(fù)了 ??1.第一種方式 ??1.1.修改Idea中的JDK版本 跟步驟修改 修改Java Compiler ??1.2.關(guān)于修改過(guò)程中遇到的異常 如果出現(xiàn)下面異常按照上述步驟定可以解決 ??1.3.IDEA工具欄操作Maven正常,但使用mvn命令運(yùn)行就報(bào)錯(cuò) 使用側(cè)工具欄的打包

    2024年02月07日
    瀏覽(42)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包