?? 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í)間的操作,替代舊的
Date
和Calendar
。 -
示例:
LocalDate.now();
-
定義:全新的API,用于日期和時(shí)間的操作,替代舊的
-
?? 默認(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)求。
-
定義:引入了新的HTTP/2客戶端API,替代
?? 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)。
-
示例:
@Test
和Assertions.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()); }
-
定義:簡(jiǎn)化了
-
?? 雙倍精度浮點(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),使其更加高效。
-
定義:對(duì)
-
?? 改進(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ā)模型。
-
示例:使用
Fiber
和FiberScope
進(jìn)行協(xié)程編程。
-
?? ZGC 和 Shenandoah 垃圾回收器進(jìn)一步改進(jìn)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-796283.html
- 定義:對(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)!