相信對(duì)于Java 9的頻繁跳票,很多人還心有余悸。雖然Java 10的推出時(shí)間,Oracle曾親自背書(shū)不會(huì)跳票,但是這按時(shí)推出的風(fēng)格還是讓我們有些適應(yīng)不良。
Java 10的發(fā)布雖然與Java 9相隔只有半年時(shí)間,但是更新的內(nèi)容卻很豐富,共計(jì)提供了109項(xiàng)新功能的支持。其中包括12項(xiàng)關(guān)鍵的新特性:

·局部變量的類型推斷;
·將 JDK 的多個(gè)代碼倉(cāng)庫(kù)合并到一個(gè)儲(chǔ)存庫(kù)中;
·垃圾收集器接口,通過(guò)引入一個(gè)干凈的垃圾收集器(GC)接口,改善不同垃圾收集器的源碼隔離性;
·向 G1 引入并行 Full GC;
·應(yīng)用類數(shù)據(jù)共享,為改善啟動(dòng)和占用空間,在現(xiàn)有的類數(shù)據(jù)共享(“CDS”)功能上再次拓展,以允許應(yīng)用類放置在共享存檔中;
·線程局部管控,允許停止單個(gè)線程,而不是只能啟用或停止所有線程;
·移除 Native-Header Generation Tool (javah);
·額外的 Unicode 語(yǔ)言標(biāo)簽擴(kuò)展。包括:cu (貨幣類型)、fw (每周第一天為星期幾)、rg (區(qū)域覆蓋)、tz (時(shí)區(qū)) 等;
·在備用內(nèi)存設(shè)備上分配堆內(nèi)存,允許 HotSpot 虛擬機(jī)在備用內(nèi)存設(shè)備上分配 Java 對(duì)象堆;
·基于 Java 的 JIT 編譯器(試驗(yàn)版本);
·根證書(shū),開(kāi)源 Java SE Root CA 程序中的根證書(shū);
·基于時(shí)間的版本發(fā)布模式,“Feature releases” 版本將包含新特性,“Update releases” 版本僅修復(fù) Bug。
千呼萬(wàn)喚始出來(lái)的局部變量的類型推斷
如果要說(shuō)這次Java 10更新中有哪個(gè)功能是最受矚目的?那么,一定非“局部變量的類型推斷”莫屬。在發(fā)布之前,Java 10發(fā)布方在網(wǎng)上共計(jì)進(jìn)行了2輪,超2500名使用者的意見(jiàn)征集。最后結(jié)果顯示,有74%的使用者強(qiáng)烈支持這個(gè)功能的發(fā)布,12%僅表示了支持,10%的人認(rèn)為這個(gè)功能并不是個(gè)好主意。
“局部變量的類型推斷”功能意味著未來(lái)開(kāi)發(fā)者可以在 Java 10 中引入其他編程語(yǔ)言中常見(jiàn)的var,但需要注意,var不能成為一個(gè)關(guān)鍵字,而是一個(gè)保留字。開(kāi)發(fā)者可以寫(xiě)這樣的代碼:var list=new ArrayList<String>(),編輯器可以自動(dòng)推測(cè)出list的類型。
雖然這個(gè)功能在寫(xiě)代碼的時(shí)候給我們帶來(lái)了便利,但是也有網(wǎng)友針對(duì)該功能提出一些異議:
網(wǎng)友1:個(gè)人以為,var的引入,在讀源碼的角度上講是災(zāi)難性的!尤其是對(duì)我這種大腦內(nèi)部堆棧比較淺的人來(lái)說(shuō)。
網(wǎng)友2:真的要這么搞?用var的確可以在寫(xiě)代碼的時(shí)候提升一點(diǎn)效率,可是讀代碼呢??我以后是不是要養(yǎng)成從右往左讀的習(xí)慣?
網(wǎng)友3:var的功能很雞肋啊
當(dāng)然也有網(wǎng)友稱這個(gè)功能在其他語(yǔ)言那里早已得到了實(shí)現(xiàn),并已被證實(shí)是優(yōu)良的語(yǔ)言特性,Java使用者不必太過(guò)保守了,糾結(jié)會(huì)影響閱讀代碼。還有網(wǎng)友稱,“我就不懂了 這些在C#里不是事的功能被java天天拿著吹”。
Java 10有多少人在使用?Java 8和Java 9你舍得拋棄嗎?
2017 年Oracle宣布,Java 語(yǔ)言將每隔 6 個(gè)月提供一次更新,而Java 10作為首個(gè)大版本對(duì)于開(kāi)發(fā)者的吸引力如何?JAXenter對(duì)于眾多的Java用戶進(jìn)行了調(diào)查,并收到了近300個(gè)反饋。

根據(jù)反饋結(jié)果顯示,大部分開(kāi)發(fā)者(82%)還在使用Java 8,8%的用戶在使用Java 9,還有7%的用戶在使用Java 7。當(dāng)然,這也并不能說(shuō)明Java 9不好,畢竟一個(gè)新事物的出現(xiàn)總要給使用者留出足夠的時(shí)間。OpenJDK董事會(huì)主席兼Oracle Java平臺(tái)小組開(kāi)發(fā)副總裁Georges Saab 曾表示:Java 9的增長(zhǎng)速度雖然不如Java 8,但是與其他版本并無(wú)差異。
“你是否會(huì)拋棄Java 8或Java 9,奔向Java 10呢?”對(duì)此,很多網(wǎng)友也給出了自己的意見(jiàn)。Markus Eisele稱,我已經(jīng)使用了一段時(shí)間測(cè)試版了,我希望大家也能夠盡快上手,畢竟發(fā)現(xiàn)bug也是一件造福開(kāi)發(fā)者和社區(qū)的事情。大多數(shù)程序員的想法是個(gè)人項(xiàng)目會(huì)考慮遷移到Java 10上,但是客戶和企業(yè)項(xiàng)目在短時(shí)間內(nèi)不會(huì)遷移到Java 10上。
