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

閑談Java9到Java20,你學(xué)會(huì)了嗎?

開(kāi)發(fā) 前端
java21將是繼17之后的另一個(gè)LTS版本,目前規(guī)劃的有5個(gè)新特性。建議還停留在1.8的可以升級(jí)到17,已升級(jí)到17的,再等幾個(gè)月升級(jí)到21??偠灾琷ava9~20是個(gè)不斷吸取他人長(zhǎng)處彌補(bǔ)自己短處的過(guò)程,java在進(jìn)步,我們也是時(shí)候更近一步了。

一、概述

自從java9開(kāi)始商用后,到現(xiàn)在一直停留在java8上。去年偶然看過(guò)說(shuō)java17之后開(kāi)始不商用了,而且springboot3和spring6最低要求JDK17,奈何太忙了一直沒(méi)時(shí)間去梳理。趁現(xiàn)在這段時(shí)間得空,從9開(kāi)始到20,逐個(gè)的去梳理下,看看有哪些變化。當(dāng)然了,限于個(gè)人能力有限,本文非正式說(shuō)明,只是個(gè)人見(jiàn)解,不可當(dāng)真。

先來(lái)個(gè)歷代特性數(shù)圖,心里有個(gè)大致的認(rèn)知。

二、各版本簡(jiǎn)介

2.1 JDK9

JDK9特性數(shù)最多的原因是這個(gè)版本引入了模塊化概念對(duì)JRE進(jìn)行了優(yōu)化,目錄結(jié)構(gòu)和之前有很大不同。

還增加了一個(gè)jshell命令,實(shí)現(xiàn)在命令行也能快速執(zhí)行java代碼的功能,對(duì)于一些簡(jiǎn)單的main方法測(cè)試,但又不想建立工程來(lái)說(shuō),確實(shí)是比較方便。

java8的時(shí)候?qū)涌谶M(jìn)行了改動(dòng),使接口可以編寫(xiě)方法體。java9對(duì)這一功能進(jìn)行了升級(jí),增加支持私有方法。

try-resource也進(jìn)行了升級(jí),可以直接傳入句柄不用再轉(zhuǎn)換了。

//jaba8
try(InputStream is =new FileInputStream(file)){

}catch (Exception e){
log.error(e);
}
//java9
InputStream is =new FileInputStream(file)
try(is){

}catch (Exception e){
log.error(e);
}

String類的底層由char數(shù)組換成了byte數(shù)據(jù),節(jié)省了空間和提高了性能。

另外,java9自己實(shí)現(xiàn)了一套httpclient不用再引用第三方實(shí)現(xiàn)了。

2.2 JDK10

G1終于正名了,java10開(kāi)始,G1成為默認(rèn)垃圾回收器。

增加了一個(gè)關(guān)鍵詞:var,不同于js的var,java的var是個(gè)語(yǔ)法糖,依據(jù)上下文推斷,推測(cè)出具體類型,實(shí)際編譯時(shí)依然是原本類型。

集合增加了copyOf方法,可以復(fù)制出一個(gè)不可變的集合出來(lái)。

2.3 JDK11

擴(kuò)大了var關(guān)鍵詞的應(yīng)用范圍。

String增加類似trim的實(shí)用方法,可以不用再用lang3包實(shí)現(xiàn)了。

豐富了java9的httpclient包的方法。

引入了一個(gè)新的垃圾回收器:Epsilon。

2.4 JDK12

switch表達(dá)式優(yōu)化1.0版,支持case多個(gè)字段

//java12以前
switch (no) {
case 1:
case 2:
case 3:
System.out.println(0);
break;
case 4:
System.out.println(4);
break;
case 5:
case 6:
System.out.println(6);
break;
case 7:
System.out.println(7);
break;
}
//java12
switch (no) {
case 1, 2, 3 -> System.out.println(0);
case 4 -> System.out.println(4);
case 5, 6 -> System.out.println(6);
case 7 -> System.out.println(7);
}

同時(shí)還支持將switvh結(jié)果賦值給對(duì)象上

int size = switch (no) {
case 1, 2, 3 -> 6;
case 4 -> 7;
case 5, 6 -> 8;
case 7 -> 9;
};

2.5 JDK一三(為啥敏感詞?)

支持了python的文本塊功能,大文本字符串再也不會(huì)亂了,尤其是使用mybatis注解方式的,SQL看起來(lái)會(huì)更清晰。

"""
a
b
n
"""

switch表達(dá)式優(yōu)化1.1版,其實(shí)和java12寫(xiě)法沒(méi)啥區(qū)別。

2.6 JDK14

switch表達(dá)式優(yōu)化終版。

增加了Record類型的類,類似VO,但只提供getter不提供setter,對(duì)于javaee來(lái)說(shuō)缺少setter是不香的。

instaceof初版優(yōu)化,增加句柄,簡(jiǎn)化類型強(qiáng)制轉(zhuǎn)換的操作,使代碼看著更整潔。

if (obj instanceof String s) { 
// can use s here
} else {
// can't use s here
}

2.7 JDK15

增加關(guān)鍵詞sealed,相比于final,sealed允許指定的類繼承。

2.8 JDK16

instaceof優(yōu)化定版。

增加Vector向量計(jì)算類。

2.9 JDK17(LTS)

注意:自本版本開(kāi)始,java恢復(fù)免費(fèi)了。并且java17類似java8是個(gè)長(zhǎng)期支持的版本。

支持蘋(píng)果的M系列芯片。

Switch支持類型推導(dǎo)了,不再限定數(shù)值、字符串了,同時(shí)還支持了case null。

// jdk17前
static void testFooBar(String s) {
if (s == null) {
System.out.println("123!");
return;
}
switch (s) {
case "1", "2" -> System.out.println("faild");
default -> System.out.println("Ok");
}
}
// jdk17
static void testFooBar(String s) {
switch (s) {
case null -> System.out.println("123");
case "1", "2" -> System.out.println("faild");
default -> System.out.println("Ok");
}
}

2.10 JDK18

默認(rèn)UTF-8位默認(rèn)編碼

增加jwebserver命令工具,可以直接啟動(dòng)一個(gè)簡(jiǎn)單的web服務(wù)。

javadoc支持新的注解,但是好像沒(méi)啥用。

重寫(xiě)了反射,提高了反射性能。

switch又增強(qiáng)了,支持復(fù)雜的lamda表達(dá)式和類型推導(dǎo)。

2.11 JDK19

引入了虛擬線程,提高并發(fā)性能。

2.12 JDK20

java20多是對(duì)之前預(yù)覽或者改進(jìn)中的功能繼續(xù)完善,沒(méi)有更多的新功能。

3、JDK21

java21將是繼17之后的另一個(gè)LTS版本,目前規(guī)劃的有5個(gè)新特性。建議還停留在1.8的可以升級(jí)到17,已升級(jí)到17的,再等幾個(gè)月升級(jí)到21??偠灾?,java9~20是個(gè)不斷吸取他人長(zhǎng)處彌補(bǔ)自己短處的過(guò)程,java在進(jìn)步,我們也是時(shí)候更近一步了。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2024-01-19 08:25:38

死鎖Java通信

2024-01-18 09:38:00

Java注解JDK5

2023-01-28 09:50:17

java多線程代碼

2022-09-26 08:49:11

Java架構(gòu)CPU

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2023-03-09 11:34:00

項(xiàng)目CMakeST

2024-05-06 00:00:00

InnoDBView隔離

2024-08-06 09:47:57

2022-07-08 09:27:48

CSSIFC模型

2023-01-30 09:01:54

圖表指南圖形化

2024-07-31 08:39:45

Git命令暫存區(qū)

2023-12-12 08:02:10

2023-10-10 11:04:11

Rust難點(diǎn)內(nèi)存

2022-07-13 08:16:49

RocketMQRPC日志

2023-01-31 08:02:18

2023-05-05 06:54:07

MySQL數(shù)據(jù)查詢
點(diǎn)贊
收藏

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