JDK10軟件介紹
JDK 10是Java 10標(biāo)準(zhǔn)版的部分實(shí)現(xiàn),改進(jìn)的關(guān)鍵點(diǎn)包括一個(gè)本地類(lèi)型推斷、一個(gè)垃圾回收的“干凈”接口。盡管JDK 9對(duì)于許多Java開(kāi)發(fā)人員非常新鮮,但它的發(fā)展并沒(méi)有停止。
Java SE 10是Java SE平臺(tái)的最新版本,本發(fā)行版包含諸如局部變量類(lèi)型推斷,并行完整GC,應(yīng)用程序類(lèi)數(shù)據(jù)共享等改進(jìn)。
JDK10版本功能
1、核心庫(kù)/ java.util中
Optional.orElseThrow()方法
一個(gè)新的方法orElseThrow已被添加到Optional課堂上。它是現(xiàn)有g(shù)et方法的同義詞,并且是現(xiàn)在的首選方法。
2、核心庫(kù)/ java.util中:收藏
用于創(chuàng)建不可修改集合的API
已經(jīng)添加了幾個(gè)新的API,以促進(jìn)創(chuàng)建不可修改的集合。該List.copyOf,Set.copyOf和Map.copyOf方法從現(xiàn)有實(shí)例中創(chuàng)建新的集合實(shí)例。新的方法toUnmodifiableList,toUnmodifiableSet以及toUnmodifiableMap已被添加到Collectors在流包類(lèi)。這些允許流的元素被收集到一個(gè)不可修改的集合中。
3、芯-SVC / java.lang.management
系統(tǒng)屬性以禁用JRE上次使用情況跟蹤
引入了新的系統(tǒng)屬性jdk.disableLastUsageTracking來(lái)禁用正在運(yùn)行的VM的JRE上次使用情況跟蹤。該屬性可以在命令行通過(guò)使用被設(shè)置 -Djdk.disableLastUsageTracking=true或-Djdk.disableLastUsageTracking。使用此系統(tǒng)屬性集,無(wú)論設(shè)置的com.oracle.usagetracker.track.last.usage屬性值如何,JRE上次使用情況跟蹤都將被禁用usagetracker.properties。
4、芯-SVC / javax.management
為開(kāi)箱即用的JMX代理散列密碼
jmxremote.passwordJMX代理現(xiàn)在正在使用SHA3-512散列覆蓋文件中的明文密碼。該角色的每一行都遵循以下格式:
role_name W hashedPassword
Where:
role_name是任何不包含空格或制表符的字符串。
W =空格或制表符
散列密碼的格式如下:
hashedPassword = base64_encoded_64_byte_salt W base64_encoded_hash W hash_algorithm
Where:
base64_encoded_64_byte_salt = 64字節(jié)隨機(jī)鹽
base64_encoded_hash = Hash_algorithm(密碼+鹽)
W =空格或制表符
hash_algorithm =使用格式https://docs.oracle.com/javase/9/docs/specs/security/standard-names.htmlmessagedigest-algorithms指定的算法字符串。這是個(gè)可選的選項(xiàng)。如果未指定,則認(rèn)為SHA3-512是算法字符串。
如果密碼是明確的,如果滿足以下所有條件,它們將被哈希覆蓋:
com.sun.management.jmxremote.password.toHashes屬性在management.properties文件中設(shè)置為true 。
密碼文件是可寫(xiě)的。
如果配置了安全管理器,則系統(tǒng)安全策略允許寫(xiě)入密碼文件。
為了更改角色的密碼,請(qǐng)將散列的密碼條目替換為新的明文密碼或新的散列密碼。如果新密碼處于清除狀態(tài),則在進(jìn)行新的登錄嘗試時(shí)將用其哈希代替。
給定角色在此文件中至少應(yīng)有一個(gè)條目。如果某個(gè)角色沒(méi)有條目,則無(wú)權(quán)訪問(wèn)。如果為同一個(gè)角色名稱(chēng)找到多個(gè)條目,則使用最后一個(gè)條目。
用戶生成的哈希密碼文件也可以用來(lái)代替明文密碼文件。如果由用戶生成,則散列密碼必須遵循上面指定的格式。
該文件必須只能由所有者訪問(wèn),否則程序?qū)⑼顺霾⒊霈F(xiàn)錯(cuò)誤。
為了防止無(wú)意中編輯生產(chǎn)環(huán)境中的密碼文件,建議部署只讀哈希密碼文件??梢酝ㄟ^(guò)運(yùn)行JMX代理預(yù)先生成清除密碼的散列條目。
建議在代理運(yùn)行時(shí)不要編輯密碼文件。如果客戶端連接在外部修改文件的同時(shí)觸發(fā)密碼文件散列,則編輯可能會(huì)丟失。文件的完整性是有保證的,但是在代理讀取文件和寫(xiě)回文件之間的短時(shí)間內(nèi)對(duì)文件進(jìn)行的任何外部編輯可能會(huì)丟失。
JDK10軟件特色
1. 備用內(nèi)存設(shè)備上的堆分配
允許HotSpot VM在備用內(nèi)存設(shè)備上分配Java對(duì)象堆內(nèi)存,該內(nèi)存設(shè)備將由用戶指定。
2. 其他Unicode語(yǔ)言 - 標(biāo)記擴(kuò)展
目標(biāo)是增強(qiáng)java.util.Locale及其相關(guān)的API,以便實(shí)現(xiàn)語(yǔ)言標(biāo)記語(yǔ)法的其他Unicode擴(kuò)展(BCP 47)。
3. 基于Java的實(shí)驗(yàn)性JIT編譯器
oracle希望將其Java JIT編譯器Graal用作Linux / x64平臺(tái)上的實(shí)驗(yàn)性JIT編譯器。
4. 根證書(shū)
這個(gè)的目標(biāo)是在Oracle的Java SE中開(kāi)源根證書(shū)。
5. 根證書(shū)頒發(fā)認(rèn)證
這將使OpenJDK對(duì)開(kāi)發(fā)人員更具吸引力,它還旨在減少OpenJDK和Oracle JDK構(gòu)建之間的差異。
6. 將JDK生態(tài)整合單個(gè)存儲(chǔ)庫(kù)
此JEP的主要目標(biāo)是執(zhí)行一些內(nèi)存管理,并將JDK生態(tài)的眾多存儲(chǔ)庫(kù)組合到一個(gè)存儲(chǔ)庫(kù)中。
7. GC改進(jìn)和內(nèi)存管理
JDK 10中有2個(gè)JEP專(zhuān)門(mén)用于改進(jìn)當(dāng)前的垃圾收集元素。
第一個(gè)垃圾收集器接口是(JEP 304),它將引入一個(gè)純凈的垃圾收集器接口,以幫助改進(jìn)不同垃圾收集器的源代碼隔離。
預(yù)定用于Java 10的第二個(gè)JEP是針對(duì)G1的并行完全GC(JEP 307),其重點(diǎn)在于通過(guò)完全GC并行來(lái)改善G1最壞情況的等待時(shí)間。G1是Java 9中的默認(rèn)GC,并且此JEP的目標(biāo)是使G1平行。
8. 線程本地握手
JDK 10將引入一種在線程上執(zhí)行回調(diào)的新方法,因此這將會(huì)很方便能停止單個(gè)線程而不是停止全部線程或者一個(gè)都不停。
9. 刪除工具javah
從JDK中移除了javah工具,這個(gè)很簡(jiǎn)單并且很重要。
JDK10更新日志
開(kāi)發(fā)GG說(shuō)這次真的沒(méi)有bug了~