Oracle 承認:Java 9 確實破壞了一些東西,開發者仍舊堅持用 Java 8

Java 有個問題:Java 語言和平臺的開發速度比以往任何時候都要快,但許多開發人員仍舊堅持使用已經發布了五年的 Java 8。


本週在倫敦舉行的 QCon 會議上,Trisha Gee,一位 JetBrains 的開發者,在發表演講前在 Twitter 上進行了調查。78%的人表示,他們正在使用 Java 8。考慮她的粉絲大多傾向於使用最前沿的技術,實際的比例可能會更高。


譯註文章發佈於2019年3月7日


你正在使用哪個版本的 #Java ?


— Trisha Gee (@trisha_gee) 2019-2-18


這讓人感到非常遺憾。Java 8 的後續版本中加入了許多功能強大的新特性:JLink 可以爲 Docker image 創建更小的 Java 可執行文件,用 var 可以代替類型聲明,JShell 爲 Java 提供了交互式功能。此外還改進了 collection、optional 實現、改進了垃圾回收、引入了模塊化機制等等。


那麼,爲什麼開發人員沒有升級?一句話,Java 9 進行了重大變更,包括內部重組、新的模塊化機制(Jigsaw 項目)並移除了一些很少使用的 API。這些改變破壞了代碼,甚至那些願意升級的開發者會顧慮依賴性問題。一位參會者說:“我們使用的開發庫還沒有支持最新 Java 版本”。


“我想解釋爲什麼升級是必要的”,來自 Oracle 的 Ron Pressler 說道。他是 Java 平臺語言開發小組中的一員,也是 Loom 項目的負責人。


“Java 有數十億行代碼,而 Java 9 確實破壞了一些東西。這是因爲 Java 已經20多歲了,在接下來的20年裏,它會繼續大受歡迎。我們必須考慮20年後的情況。Java 9 之前的 JDK 結構是不可維護的。如果不做出這樣的改變,就無法保持 Java 的競爭力。因此,改變是絕對必要的”。


JClarity 的 CEO Martijn Verburg 表示,目前已經取得了一些進展:“在最受歡迎的1000個 Maven 庫中,目前大約65%兼容了 Java 9+。6個月前,這一比例大約是42%,可能還需要一年時間纔會完全兼容“。JClarity 是一家專注解決 Java 性能問題的公司。


然而,開源項目和企業私有庫的升級之路會很漫長。Java 8 現在仍然支持得很好,沒有強烈的升級衝動。“未來將會出現兩個世界”,一位與會者表示,“一個 Java 8 的世界,一個 Java 11+ 的世界”。


在一個 QCon Java 座談會上,Pressler 看起來有點沮喪:“在 Java 9+ 上無法運行代碼沒有特別的原因,可能只需要修改一些過時的 API 調用或者類似的工作。Java 9+ 並不是一門別的什麼語言”。


與此同時,他也承認目前每六個月給 Java 一個新版本號的做法的確給人造成了不好的印象。



“我們做過的最讓人感到困惑的事情之一,就是用整數版本編號給每六個月發佈的新版本命名。從 Java 9 到 Java 10,你會認爲這是 Java 一個新的主要發佈版本,但事實並非如此。Java 10 並不是一個主要發佈版本,而是一個小版本。最近的一個 Java 主要發佈版本是 Java 9。在可預見的未來,不會再有這種情況發生了”。


Oracle 修改了 Java 11 的授權策略——必須獲得商業許可。除非你願意跟上開源 OpenJDK 的步伐,這會不會也是一個問題?


“Java 實際上變得更自由了”,Verburg 說道。原因在於 Oracle 已經正式支持 OpenJDK 並與 OpenJDK 提供者共享安全補丁。“但如果訪問 Oracle 的網站下載 Java,你必須做出決定。是要商業版 Java、Oracle 的 OpenJDK,還是其他 OpenJDK?你不得不做出自己的選擇。這就是市場中的困惑”。


Oracle Java SE 產品經理 Donald Smith 對此表示贊同,但他補充道:“不幸的是,Register 雜誌無法刊登題爲‘現在 Java 比以往任何時候都更自由’的文章,人們是不會看的”。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章