java新特性
java8的新特性
目前使用最多的jdk版本
相較jdk7主要不同在于
-
Lambda 表達(dá)式和函數(shù)式編程:
- JDK 8 引入了 Lambda 表達(dá)式,使得函數(shù)式編程更加便捷。Lambda 表達(dá)式允許將函數(shù)作為參數(shù)傳遞給方法,以及在集合的操作中更簡潔地進(jìn)行數(shù)據(jù)處理。
- 新增的
java.util.function
包提供了函數(shù)式接口(如Function
、Predicate
、Consumer
等),用于支持函數(shù)式編程的操作。
-
Stream API:
- JDK 8 引入了 Stream API,允許以聲明式的方式對集合進(jìn)行操作。Stream 提供了過濾、映射、歸約等操作,可以顯著簡化集合處理的代碼。
-
Default 方法和接口的擴(kuò)展:
- JDK 8 允許接口中定義默認(rèn)方法(Default Method),這樣在接口發(fā)生變化時(shí),實(shí)現(xiàn)類不需要全部重新實(shí)現(xiàn)。
- 接口還可以包含靜態(tài)方法,用于提供實(shí)用工具方法。
-
新的日期和時(shí)間 API:
- JDK 8 引入了
java.time
包,提供了全新的日期和時(shí)間 API,替代了以前的java.util.Date
和java.util.Calendar
。 - 新的 API 更加易用、清晰,可以更好地處理日期、時(shí)間、時(shí)間間隔等。
- JDK 8 引入了
-
方法引用:
- JDK 8 允許通過方法引用來簡化 Lambda 表達(dá)式,特別是當(dāng)一個(gè) Lambda 表達(dá)式只調(diào)用一個(gè)已有方法時(shí)。
-
重復(fù)注解:
- JDK 8 支持在同一元素上多次使用同一注解,通過重復(fù)注解(Repeatable Annotation)來簡化代碼和提高可讀性。
-
類型注解:
- JDK 8 引入了類型注解,允許在變量、參數(shù)、返回值等地方使用注解,以提供更多的編譯時(shí)檢查。
-
Nashorn 引擎:
- JDK 8 替換了舊的 JavaScript 引擎為全新的 Nashorn 引擎,提供更好的性能和更廣泛的兼容性。
-
其他改進(jìn):
- JDK 8 還包括對并發(fā)編程的改進(jìn),如新的
java.util.concurrent
類和原子變量。 - 改進(jìn)了 JVM 的性能、內(nèi)存管理和垃圾回收。
- JDK 8 還包括對并發(fā)編程的改進(jìn),如新的
java17新特性(重要)
在2021/9/14正式發(fā)布
長期支持版本,最多支持到2029/9
-
增強(qiáng)的偽隨機(jī)數(shù)生成器
-
棄用Applet API
- Applet用于編寫在 Web 瀏覽器端運(yùn)行的 Java 小程序,很多年前就已經(jīng)被淘汰了,已經(jīng)沒有理由使用了。 在 Java 9 時(shí)被標(biāo)記棄用,但到17才刪除。
-
switch的類型匹配
- 各類型包括null的判斷也進(jìn)行了優(yōu)化
// New code
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();
};
}
-
刪除遠(yuǎn)程方法調(diào)用激活機(jī)制
- 刪除RMI激活機(jī)制,
-
密封類轉(zhuǎn)正
-
密封類在java15就有了,這是一種用于限制繼承關(guān)系的新特性。密封類允許你明確指定哪些類可以成為其子類,從而在一定程度上增強(qiáng)了代碼的可維護(hù)性和安全性。
-
在正常情況下,一個(gè)類可以被任何其他類繼承。然而,有時(shí)你可能希望限制繼承的范圍,以確保只有特定的子類可以繼承一個(gè)類。這就是密封類的作用。
-
密封類的好處在于,它可以在編譯時(shí)提供更強(qiáng)的類型檢查,避免意外的繼承和繼承鏈的混亂。它可以幫助開發(fā)者更好地控制代碼的繼承結(jié)構(gòu),以及在未來對代碼進(jìn)行擴(kuò)展和維護(hù)時(shí)更加可靠。
-
-
刪除實(shí)驗(yàn)性的 AOT 和 JIT 編譯器
- 在java9引入,作用是在虛擬機(jī)啟動(dòng)前將java類編譯成本機(jī)代碼,刪除是因?yàn)楹苌偈褂?維護(hù)的工作量太大
-
棄用安全管理器
- 因?yàn)椴皇潜Wo(hù)客戶端java代碼的主要方法,也很少保護(hù)服務(wù)端代碼,所以棄用
-
外部函數(shù)和內(nèi)存API(孵化)文章來源:http://www.zghlxwxcb.cn/news/detail-668860.html
- 可以與運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作,高效調(diào)用外部函數(shù),安全訪問外部內(nèi)存(不受jvm管理的內(nèi)存)
-
向量API(正式)文章來源地址http://www.zghlxwxcb.cn/news/detail-668860.html
- 提供高性能向量計(jì)算
end
到了這里,關(guān)于java8新特性,java17新特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!