調(diào)查顯示新發(fā)布的Java9不太受歡迎
你有遷移到 JDK 9 的計(jì)劃嗎,是怎么樣的?你已經(jīng)在生產(chǎn)環(huán)境中使用 JDK 9 了嗎,或者只是在觀望中?這篇文章將介紹幾個(gè) JDK 9 在生產(chǎn)環(huán)境中很少被采用的關(guān)鍵原因。
距離 JDK 9 的發(fā)布已過去了幾個(gè)月,“將應(yīng)用程序遷移到 JDK 9”這個(gè)話題相信在很長(zhǎng)一段時(shí)間內(nèi)都會(huì)備受開發(fā)者的關(guān)注和討論。事實(shí)證明,即使不使用任何內(nèi)部 API(比如“臭名昭著”的 sun.misc.Unsafe 類),也可能會(huì)導(dǎo)致應(yīng)用程序不能在 JDK 9 上啟動(dòng)。
針對(duì)這些有關(guān)“遷移”的問題,下面介紹一個(gè)以“你遷移到 JDK 9 的計(jì)劃是什么”為主題的民意調(diào)查結(jié)果,以了解開發(fā)者將應(yīng)用程序移植到 JDK 9 過程中所處的階段。調(diào)查有兩次,分別是面向 EMEA 和美洲的開發(fā)者。
對(duì)于“你遷移到 JDK 9 的計(jì)劃是什么”主題的調(diào)查包含了以下的選擇:
- 已在生產(chǎn)環(huán)境中使用 JDK 9
- 正在遷移到 JDK 9
- 正在觀望中
- 等待下一個(gè)長(zhǎng)期支持版的發(fā)布
- 還在使用 JDK 6
具體的調(diào)查數(shù)據(jù)如下:
來(lái)自 EMEA (歐洲、中東、非洲三地區(qū)的合稱)開發(fā)者的調(diào)查結(jié)果
來(lái)自美洲開發(fā)者的調(diào)查結(jié)果
綜合結(jié)果
可以看到,“正在觀望中”的開發(fā)者占了大多數(shù),而使用舊版本的朋友仍有不少,但意外的是,使用 JDK 9 的用戶居然一個(gè)都沒有。雖然這次調(diào)查的樣本量可能不夠大,但我們相信這確實(shí)是比較貼近現(xiàn)實(shí)的。
下面說(shuō)說(shuō) JDK 9 很少在生產(chǎn)環(huán)境中被采用的原因:
應(yīng)用程序從 JDK 8 或更早版本遷移至 JDK 9 出現(xiàn)的不兼容變更情況的數(shù)量。盡管已經(jīng)從標(biāo)準(zhǔn) API 中移除的六種方法不會(huì)影響很多人,但是像停止 JVM 啟動(dòng)的命令行選項(xiàng)的數(shù)量將是一個(gè)障礙。
內(nèi)部 JDK API 封裝的影響。同樣,直接受此影響的開發(fā)者數(shù)量也不會(huì)很大,但間接受到影響的開發(fā)者數(shù)量則很多。因?yàn)榇蠖鄶?shù)開發(fā)者在開發(fā)應(yīng)用程序時(shí)使用了第三方庫(kù)和框架,有很多這樣的庫(kù)和框架使用封裝的 API。雖然大部分已經(jīng)過測(cè)試并提供專門針對(duì) JDK 9 的版本,但仍然有很多還沒這樣做。對(duì)于沒有得到積極維護(hù)的庫(kù)或框架來(lái)說(shuō),這無(wú)疑是一個(gè)會(huì)阻礙遷移至 JDK 9 的問題。
受支持的壽命周期。甲骨文最近宣布將加快 JDK 的發(fā)布頻率,改為每六個(gè)月發(fā)布一次。按照改進(jìn)的發(fā)布計(jì)劃,JDK 9 不是長(zhǎng)期支持版本。在這個(gè)新方案下,JDK 9 將是以 JDK 8 為基礎(chǔ)的***個(gè)“功能”版本。而且由于公共的更新,開發(fā)者在決定要部署的 Java 版本時(shí),需要記住一些東西。長(zhǎng)期支持版本的更新將至少提供三年,而 JDK 8 的受支持周期更像是四年半。這些版本適用于喜歡穩(wěn)定的企業(yè),使其能夠在單個(gè)版本上運(yùn)行大型的應(yīng)用程序。
大多數(shù)開發(fā)者都表示,他們將繼續(xù)在生產(chǎn)環(huán)境中使用 JDK 8,至少直到下一個(gè) LTS 版發(fā)布。
根據(jù)甲骨文展示的計(jì)劃,在 LTS 版本之間進(jìn)行轉(zhuǎn)換對(duì)開發(fā)者來(lái)說(shuō)頗具挑戰(zhàn)性。當(dāng) JDK 11 發(fā)布時(shí),它將包含可能影響應(yīng)用程序兼容性的新功能,而且由于 JDK 8 將不再有公共更新,用戶面臨的只有兩種選擇,要么選擇支付以獲得商業(yè)支持,要么直接遷移到新的 LTS 版本,并祈求他們的應(yīng)用程序不會(huì)有所破壞并需要進(jìn)行實(shí)質(zhì)性變更才能正常運(yùn)行。