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

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

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