自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

繼 SpringBoot 3.0,Elasticsearch8.0 官宣:擁抱 Java 17

開發(fā) 前端
新版任你發(fā),我用 Java 8,這可能是當(dāng)下 Java 開發(fā)者的真實(shí)寫照。不過時(shí)代可能真的要拋棄 Java 8,全面擁抱 Java 17 了。

大家好,我是君哥。

新版任你發(fā),我用 Java 8,這可能是當(dāng)下 Java 開發(fā)者的真實(shí)寫照。不過時(shí)代可能真的要拋棄 Java 8,全面擁抱 Java 17 了。

Spring Boot 3.0

前些天,相信小伙伴們都注意到了,SpringBoot 發(fā)布了 3.0.0-M1 版本,并官宣全面擁抱 Java 17,下面的截圖是 Release Notes 中的一段:

其他的新特性大家可以去 Github 查看。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes/16c166b5fb4232998a8cfd3966c2851ec1eddf02

Spring Boot 3.0.0-M1 版本發(fā)布,也意味著 Spring Boot 進(jìn)入 3.x 版本的迭代,同時(shí)也看到,3.x 版本開始 Spring Boot 要全面擁抱 Java 17 了。

Elastic 8

湊巧的是,2022 年 2 月 11 日,Elastic 也發(fā)布了新版本 Elastic 8,這個(gè)版本跟上個(gè)版本間隔了 3 年。下面的截圖是 Issue 79873:

可以看到,運(yùn)行新的 Elasticsearch 版本需要 Java 17 了。

Java 17

從 Java 8 以后,每個(gè)版本發(fā)布都增加了哪些新特性呢?我們一起來看一下。

Java 9

  • 私有接口方法
  • 默認(rèn)垃圾收集器改為 G1
  • HTTP client,支持 WebSocket、HTTP/2、HTTPS/TLS、非阻塞 API。

Java 10

  • 局部變量類型推斷,可以使用 var 類型來定義變量。
  • 不可變集合
  • G1 支持并行 Full GC
  • 基于 Java 的 JIT 編譯器 Graal
  • 支持在不執(zhí)行全局安全點(diǎn)的情況下執(zhí)行線程回調(diào),這樣可以在不停止所有線程的情況下停止單個(gè)線程。

Java 11

  • 標(biāo)準(zhǔn) HTTP Client 升級
  • 引入 ZGC 垃圾收集器
  • Flight Recorder,可以收集基于 OS、JVM和JDK 事件產(chǎn)生的數(shù)據(jù)。
  • 對Stream、Optional、集合 API進(jìn)行增強(qiáng)。

Java 12

  • 引入 Switch 表達(dá)式
  • Shenandoah GC 垃圾收集算法
  • JMH 基準(zhǔn)測試
  • G1 支持可中斷的 mixed GC,將 Mixed GC 拆分為強(qiáng)制部分和可選部分,強(qiáng)制部分一定會被回收,可選部分可以不被回收,這樣垃圾收集過程中優(yōu)先處理強(qiáng)制集,更容易滿足暫停時(shí)間目標(biāo)。
  • G1 可以歸還不使用的內(nèi)存給操作系統(tǒng)

Java 13

  • switch 優(yōu)化更新,增加 yield 關(guān)鍵字用于返回結(jié)果。
  • ZGC 支持將未使用的內(nèi)存歸還操作系統(tǒng)
  • 引入了文本塊,可以使用 """ 三個(gè)引號表示文本塊,示例代碼如下:
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";

Java 14

  • instanceof 語法簡化,可以直接給對象賦值:
if (obj instanceof String s) { 
//這里可以使用 s 變量
} else {
//這里不能使用 s 變量
}
  • 引入 Record,類似于枚舉類型,具有 Lombok 功能,可以自動(dòng)生成構(gòu)造器、equals、getter 等方法。
  • 放棄 CMS

Java 15

  • 引入 hidden class
  • String.substring 優(yōu)化,如果長度為 0,返回 null
  • 引入 Sealed class

Java 16

  • Stream新增toList方法
  • 提供jpackage
  • java.time 根據(jù)時(shí)段獲取時(shí)間

Java 17

  • 升級 switch 使用,switch可直接用 instanceof 模式匹配選擇,不過需要提前做 null 判斷(下面代碼選自 oschina):
Object o;
switch (o) {
case null -> System.out.println("首先判斷對象是否為空,走空指針邏輯等后續(xù)邏輯");
case String s -> System.out.println("判斷是否為字符串,s:" + s);
case record p -> System.out.println("判斷是否為Record類型: " + p.toString());
case int[] arr -> System.out.println("判斷是否為數(shù)組,展示int數(shù)組的長度" + ia.length);
case Integer i -> System.out.println("判斷是否為Intger對象,i:" + i);
case Student s -> System.out.println("判斷是否為具體學(xué)生對象,student:" + s.toString());
case UserCommonService -> System.out.println("判斷是否為普通用戶實(shí)現(xiàn)類,然后走普通用戶邏輯");
case UserVipService -> System.out.println("判斷是否為vip用戶實(shí)現(xiàn)類,然后走vip用戶邏輯");
default -> System.out.println("Something else");
}
  • 默認(rèn)啟用 Parallel GC
  • 增強(qiáng)TreeMap
  • 統(tǒng)一日志異步刷新,先將日志寫入緩存,獨(dú)立線程負(fù)責(zé)刷新到相應(yīng)輸出。

上面的版本只有 Java 11 和 Java 17 是 LTS(Long Term Support) 版本。

總結(jié)

全面擁抱 Java 17 還沒有真的到來,但已經(jīng)在路上了,作為程序員的我們應(yīng)該做準(zhǔn)備了。


責(zé)任編輯:武曉燕 來源: 君哥聊技術(shù)
相關(guān)推薦

2022-06-10 14:17:19

5G R175G創(chuàng)新

2020-12-25 14:55:13

VS Code代碼編程

2025-04-07 02:21:00

2023-06-29 07:54:19

2023-08-31 22:50:12

微軟開發(fā)

2018-11-15 11:17:46

智慧城市

2021-05-28 13:44:02

華為MatePad Pro鴻蒙系統(tǒng)

2016-12-09 08:51:18

GoogleDevelopers網(wǎng)站

2015-05-20 15:51:50

敏捷網(wǎng)絡(luò)/華為

2015-05-21 08:55:46

華為敏捷網(wǎng)絡(luò)

2024-01-18 15:17:56

谷歌云計(jì)算三星

2022-04-25 10:34:19

云原生直播

2019-12-26 09:26:50

青云QingCloud

2018-10-17 09:47:38

微博搜索全面技術(shù)儲備

2021-11-01 05:35:57

Avast免費(fèi)殺毒Windows 11

2024-08-13 13:11:02

2021-05-11 08:52:16

iCloud蘋果文稿和數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號