更新時(shí)間:2022-11-15 09:26:39 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1289次
(1)備份()
java.util.List、java.util.Map 和java.util.Set 每個(gè)都有一個(gè)新的靜態(tài)方法copyOf(Collection)。
它返回給定集合的不可修改的副本:
@Test(expected = UnsupportedOperationException.class)
public void whenModifyCopyOfList_thenThrowsException() {
List<Integer> copyList = List.copyOf(someIntList);
copyList.add(4);
}
任何修改此類集合的嘗試都將導(dǎo)致java.lang.UnsupportedOperationException運(yùn)行時(shí)異常。
(2)toUnmodifiable*()
java.util.stream.Collectors 獲取額外的方法來將Stream 收集到不可修改的List、Map 或Set中:
@Test(expected = UnsupportedOperationException.class)
public void whenModifyToUnmodifiableList_thenThrowsException() {
List<Integer> evenList = someIntList.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());
evenList.add(4);
}
任何修改此類集合的嘗試都將導(dǎo)致java.lang.UnsupportedOperationException運(yùn)行時(shí)異常。
java.util.Optional、java.util.OptionalDouble、java.util.OptionalInt和java.util.OptionalLong每個(gè)都有一個(gè)新方法orElseThrow(),它不接受任何參數(shù),如果沒有值則拋出NoSuchElementException :
@Test
public void whenListContainsInteger_OrElseThrowReturnsInteger() {
Integer firstEven = someIntList.stream()
.filter(i -> i % 2 == 0)
.findFirst()
.orElseThrow();
is(firstEven).equals(Integer.valueOf(2));
}
它是同義詞,現(xiàn)在是現(xiàn)有g(shù)et()方法的首選替代方法。
JVM 現(xiàn)在知道在 Docker 容器中運(yùn)行, 并將提取特定于容器的配置,而不是查詢操作系統(tǒng)本身——它適用于已分配給容器的 CPU 數(shù)量和總內(nèi)存等數(shù)據(jù)。
但是,此支持僅適用于基于 Linux 的平臺(tái)。默認(rèn)情況下啟用此新支持,可以在命令行中使用 JVM 選項(xiàng)將其禁用:
-XX:-UseContainerSupport
此外,此更改添加了一個(gè) JVM 選項(xiàng),該選項(xiàng)提供了指定 JVM 將使用的 CPU 數(shù)量的能力:
-XX:ActiveProcessorCount=count
此外,還添加了三個(gè)新的 JVM 選項(xiàng),以允許 Docker 容器用戶對(duì)將用于 Java 堆的系統(tǒng)內(nèi)存量進(jìn)行更細(xì)粒度的控制:
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage
cacerts 密鑰庫最初是空的,旨在包含一組根證書,可用于建立對(duì)各種安全協(xié)議使用的證書鏈的信任。
因此,關(guān)鍵安全組件(如 TLS)在 OpenJDK 構(gòu)建下默認(rèn)不工作。
在 Java 10 中,Oracle 開源了 Oracle Java SE Root CA 程序中的根證書,以使 OpenJDK 構(gòu)建對(duì)開發(fā)人員更具吸引力,并減少這些構(gòu)建與 Oracle JDK 構(gòu)建之間的差異。
(1)命令行選項(xiàng)和工具
工具javah 已從 Java 10 中刪除,Java 10 生成了實(shí)現(xiàn)本機(jī)方法所需的 C 頭文件和源文件——現(xiàn)在,可以使用javac -h 代替。
policytool 是用于策略文件創(chuàng)建和管理的基于 UI 的工具。現(xiàn)在已將其刪除。用戶可以使用簡單的文本編輯器來執(zhí)行此操作。
刪除了 java -Xprof選項(xiàng)。該選項(xiàng)用于分析正在運(yùn)行的程序并將分析數(shù)據(jù)發(fā)送到標(biāo)準(zhǔn)輸出。用戶現(xiàn)在應(yīng)該改用jmap 工具。
(2)蜜蜂
已棄用的 java.security.acl 包已標(biāo)記為 forRemoval=true 并且可能會(huì)在 Java SE 的未來版本中被刪除。它已被java.security.Policy 和相關(guān)類取代。
同樣,java.security.{Certificate,Identity,IdentityScope,Signer} API 被標(biāo)記為forRemoval=true。
從 Java 10 開始,Oracle 已轉(zhuǎn)向基于時(shí)間的 Java 發(fā)布。這具有以下含義:
每六個(gè)月發(fā)布一個(gè)新的 Java。2018 年 3 月發(fā)布的是 JDK 10,2018 年 9 月發(fā)布的是 JDK 11,依此類推。這些稱為功能發(fā)布,預(yù)計(jì)至少包含一個(gè)或兩個(gè)重要功能
對(duì)功能發(fā)布的支持將僅持續(xù)六個(gè)月,即直到下一個(gè)功能發(fā)布
長期支持版本將標(biāo)記為 LTS。對(duì)此類發(fā)布的支持將持續(xù)三年
Java 11 將是一個(gè) LTS 版本
java -version 現(xiàn)在將包含 GA 日期,從而更容易識(shí)別版本的年齡:
$ java -version
openjdk version "10" 2018-03-20
OpenJDK Runtime Environment 18.3 (build 10+46)
OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode)
以上就是關(guān)于“一文讀懂JDK10新特性”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下本站的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743