Java 10的10個(gè)新特性總結(jié)
Java 9才發(fā)布幾個(gè)月,很多玩意都沒(méi)整明白,現(xiàn)在Java 10又要來(lái)了。
這時(shí)候我真想說(shuō):線(xiàn)上用的JDK 7,甚至JDK 6,而JDK 8 還沒(méi)用熟,JDK 9 才發(fā)布不久不知道啥玩意,JDK 10……
剛學(xué)Java的同學(xué)是不是感覺(jué)一臉蒙逼?
就連我這個(gè)老司機(jī)也同樣感覺(jué)如此!
Java 更新越來(lái)越快,我們做技術(shù)的也要跟上步伐,不然總會(huì)慢別人一拍,這新東西從國(guó)外到國(guó)內(nèi)應(yīng)用一般要好幾年的時(shí)間,如果我們提前了解并應(yīng)用這些新技術(shù)對(duì)自己不是壞事。
Java 10的新特性
說(shuō)了這么多,看Java 10都會(huì)有哪些特性來(lái)改變我們寫(xiě)代碼的方式呢?!
1. 局部變量類(lèi)型推斷
局部變量類(lèi)型推斷可以說(shuō)是Java 10中最值得注意的特性,這是Java語(yǔ)言開(kāi)發(fā)人員為了簡(jiǎn)化Java應(yīng)用程序的編寫(xiě)而采取的又一步,如下圖所示。
這個(gè)新功能將為Java增加一些語(yǔ)法糖 - 簡(jiǎn)化它并改善開(kāi)發(fā)者體驗(yàn)。新的語(yǔ)法將減少與編寫(xiě)Java相關(guān)的冗長(zhǎng)度,同時(shí)保持對(duì)靜態(tài)類(lèi)型安全性的承諾。
局部變量類(lèi)型推斷將引入"var"關(guān)鍵字,也就是你可以隨意定義變量而不必指定變量的類(lèi)型,如:
將被下面這個(gè)新語(yǔ)法所取代:
看完是不是有點(diǎn)JS的即視感???越來(lái)越像JS了嗎?!雖然類(lèi)型推斷在Java中不是一個(gè)新概念,但在局部變量中確是很大的一個(gè)改進(jìn)。
說(shuō)到類(lèi)型推斷,從JDK 5引進(jìn)泛型,到JDK 7的"<>"操作符允許不綁定類(lèi)型而初始化List,再到JDK 8的Lambda表達(dá)式,再到現(xiàn)在JDK 10的局部變量類(lèi)型推斷,Java類(lèi)型推斷正大刀闊斧的向前發(fā)展。
局部變量類(lèi)型推薦僅限于如下使用場(chǎng)景:
局部變量初始化for循環(huán)內(nèi)部索引變量傳統(tǒng)的for循環(huán)聲明變量Java官方表示,它不能用于以下幾個(gè)地方:
方法參數(shù)構(gòu)造函數(shù)參數(shù)方法返回類(lèi)型字段捕獲表達(dá)式(或任何其他類(lèi)型的變量聲明)
2. 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平行。
3. 線(xiàn)程本地握手(JEP 312)
JDK 10將引入一種在線(xiàn)程上執(zhí)行回調(diào)的新方法,因此這將會(huì)很方便能停止單個(gè)線(xiàn)程而不是停止全部線(xiàn)程或者一個(gè)都不停。
4. 備用內(nèi)存設(shè)備上的堆分配(JEP 316)
允許HotSpot VM在備用內(nèi)存設(shè)備上分配Java對(duì)象堆內(nèi)存,該內(nèi)存設(shè)備將由用戶(hù)指定。
5. 其他Unicode語(yǔ)言 - 標(biāo)記擴(kuò)展(JEP 314)
目標(biāo)是增強(qiáng)java.util.Locale及其相關(guān)的API,以便實(shí)現(xiàn)語(yǔ)言標(biāo)記語(yǔ)法的其他Unicode擴(kuò)展(BCP 47)。
6. 基于Java的實(shí)驗(yàn)性JIT編譯器
Oracle希望將其Java JIT編譯器Graal用作Linux / x64平臺(tái)上的實(shí)驗(yàn)性JIT編譯器。
7. 根證書(shū)(JEP 319)
這個(gè)的目標(biāo)是在Oracle的Java SE中開(kāi)源根證書(shū)。
8. 根證書(shū)頒發(fā)認(rèn)證
這將使OpenJDK對(duì)開(kāi)發(fā)人員更具吸引力,它還旨在減少OpenJDK和Oracle JDK構(gòu)建之間的差異。
9. 將JDK生態(tài)整合單個(gè)存儲(chǔ)庫(kù)(JEP 296)
此JEP的主要目標(biāo)是執(zhí)行一些內(nèi)存管理,并將JDK生態(tài)的眾多存儲(chǔ)庫(kù)組合到一個(gè)存儲(chǔ)庫(kù)中。
10. 刪除工具javah(JEP 313)
從JDK中移除了javah工具,這個(gè)很簡(jiǎn)單并且很重要。
Java 10嘗鮮
就像所有其他JDK版本一樣,Oracle已經(jīng)發(fā)布了一個(gè)Java 10初始候選版本,Java開(kāi)發(fā)者可以下載此版本用來(lái)測(cè)試新功能。如果你對(duì)Java 10抱有期待想提早嘗試,那么現(xiàn)在就開(kāi)始吧!
嘗鮮地址:http://openjdk.java.net/projects/jdk/10/
最后的一點(diǎn)想法
對(duì)于第一點(diǎn)新特性來(lái)說(shuō)確實(shí)是一個(gè)大的跨越,其他特性或多或少都能帶給開(kāi)發(fā)者福音。但最終Java 10會(huì)是什么樣,或許還會(huì)增加更多實(shí)用性的新功能或者優(yōu)化,我們還得期待!
現(xiàn)在要做的就是,趕緊熟悉JDK 8,現(xiàn)在已經(jīng)是很多互聯(lián)網(wǎng)企業(yè)標(biāo)配了。如果還在使用JDK4-7,那真的是要OUT了。。
在不久的將來(lái),Java 10將徹底改變你寫(xiě)代碼的方式!
相關(guān)文章
Java transient關(guān)鍵字與序列化操作實(shí)例詳解
這篇文章主要介紹了Java transient關(guān)鍵字與序列化操作,結(jié)合實(shí)例形式詳細(xì)分析了java序列化操作相關(guān)實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2019-09-09java高并發(fā)的volatile與Java內(nèi)存模型詳解
這篇文章主要介紹了java高并發(fā)的volatile與Java內(nèi)存模型,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-10-10java保證對(duì)象在內(nèi)存中唯一性的實(shí)現(xiàn)方法
這篇文章主要介紹了java如何保證對(duì)象在內(nèi)存中的唯一性,如果創(chuàng)建多個(gè)對(duì)象的話(huà),可能會(huì)引發(fā)出各種各樣的問(wèn)題,這時(shí),就需要我們保證這個(gè)對(duì)象在內(nèi)存中的唯一性,需要的朋友可以參考下2019-06-06Java如何根據(jù)不同系統(tǒng)動(dòng)態(tài)獲取換行符和盤(pán)分割符
這篇文章主要介紹了Java如何根據(jù)不同系統(tǒng)動(dòng)態(tài)獲取換行符和盤(pán)分割符,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Springboot+Redis執(zhí)行l(wèi)ua腳本的項(xiàng)目實(shí)踐
本文主要介紹了Springboot+Redis執(zhí)行l(wèi)ua腳本的項(xiàng)目實(shí)踐,詳細(xì)的介紹Redis與Lua腳本的結(jié)合應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09MyBatisPlus中使用or()和and()遇到的問(wèn)題及細(xì)節(jié)處理
這篇文章主要介紹了MyBatisPlus中使用or()和and()遇到的問(wèn)題,本文通過(guò)多種寫(xiě)法實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)
下面小編就為大家?guī)?lái)一篇java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)
這篇文章主要介紹了Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Java反射機(jī)制的學(xué)習(xí)總結(jié)
總的來(lái)說(shuō),java反射機(jī)制是一個(gè)很好用的東西,用它可以解決很多死的東西,因?yàn)榉瓷錂C(jī)制的靈活行很大,有了他,我們就不要花太多的時(shí)間來(lái)寫(xiě)操做數(shù)據(jù)庫(kù)的代碼了,而是方法更多的時(shí)間在項(xiàng)目的邏輯功能上,這個(gè)可以很大的減少開(kāi)發(fā)時(shí)間,而且代碼的可讀性好2013-09-09