阿里開源自用 OpenJDK 版本,Java 社區迎來中國力量

阿里開源自用 OpenJDK 版本,Java 社區迎來中國力量

3 月 21 日,阿里巴巴將宣佈開源 Alibaba Dragonwell。屆時,開發者可通過阿里雲開發者中心及 Github 社區下載使用。InfoQ 記者獨家專訪了阿里雲智能基礎產品事業部資深技術專家李三紅、阿里雲智能基礎產品事業部研究員 Kingsum Chow (周經森),聽他們如何看待 Alibaba Dragonwell 與 Java 歸途。


作者 | 趙鈺瑩
受訪嘉賓 | 阿里雲智能基礎產品事業部資深技術專家 李三紅
阿里雲智能基礎產品事業部研究員 Kingsum Chow (周經森)


阿里巴巴即將重磅開源 OpenJDK 長期支持版本 Alibaba Dragonwell。衆所周知,Oracle 對 Java 的態度已經發生系列轉變,由於 Java 用戶羣體龐大,預計此事在很長一段時間內都是開發者的討論焦點。作爲世界上最大的 Java 用戶之一,阿里巴巴此時選擇開源 OpenJDK 長期支持版本 Alibaba Dragonwell 是出於哪些考量呢?

  • Oracle 撒手,宣佈對個人用戶 (Personal Users) , Java 8 官方支持時間持續到 2020 年 12 月;對商業用戶(Commercial Users),2019 年 1 月之後不再提供免費更新。
  • 紅帽喊話,計劃在 2023 年之前繼續提供對 OpenJDK 8 的支持。
  • AWS 加入,正式推出 OpenJDK 長期支持版本 Amazon Corretto。


如今,阿里巴巴也宣佈重磅開源 OpenJDK 長期支持版本 Alibaba Dragonwell。


這不禁讓人感嘆:Java 生態圈碎片化趨勢越來越明顯。對開發者而言,既不希望冒風險即刻更換,又希望可以使用具有持續安全更新和完備功能的 JDK。此時,阿里巴巴宣佈開源 OpenJDK 長期支持版本,出於哪些考慮?這是否可以打動堅守的 Java 8 羣體並解決其燃眉之急?未來,阿里巴巴打算如何處理這一項目與 OpenJDK 的關係?這家 Java 代碼量上億 (billion lines of Java code ) 的公司如何看待 Java 的未來?

Alibaba Dragonwell

Java 生態圈內的不少開發者想必對 AWS 開源的 OpenJDK 長期支持版本 Corretto 項目名字的來歷有所耳聞,Corretto 由 Caffe Corttto 演變而來,這是一種意大利飲料,指含有少量白酒的濃縮咖啡。無獨有偶,Alibaba Dragonwell 的命名也與飲料頗有淵源。周經森在採訪中透露:

“Dragonwell”中文譯爲龍井,象徵着中國的茶文化,又恰好是杭州特色(阿里巴巴總部所在地);“well”一詞通常被描述爲水源匯聚在一起供大家享用,我們希望可以集合所有開發者的力量不斷完善該項目並最終貢獻給所有用戶。

爲何此時開源?

在很大程度上,Java 由 Oracle 長期主導。自 2017 年底,Oracle 就開始陸續轉變 Java 策略,逐漸將 Oracle JDK 中的商業功能開源給社區,並宣佈不再提供免費商業版本更新,不提供安全更新和漏洞修復支持。


這對開發者而言意味着什麼?如果你是 Oracle JDK 8 的用戶,原 License 尚可免費使用,但之後若希望得到持續安全更新則需要爲此付費。如今,在 Oracle 主導下的 Java 大環境已經發生變化。作爲最大的 Java 的用戶之一,阿里巴巴幾乎擁有世界最大規模的 Java 應用集羣,肯定需要爲此採取一些行動。


在採訪中,李三紅表示,Oracle 的系列轉變傳遞出一個重要訊息:

如果希望繼續免費使用 Java 並獲得持續更新,那之後可能就需要轉換到社區版本。


基於此,阿里巴巴決定開源 OpenJDK 長期支持版本 Alibaba Dragonwell,一是因爲其自身擁有大量 Java 客戶和業務需求,阿里巴巴希望他們可以繼續免費享受到 JDK 的所有功能;二是考慮到不少開發者可能會做出新的選擇,阿里巴巴決定開源該項目,爲開發者提供一個新的參考。

重要特性

Alibaba Dragonwell 是一款免費的 OpenJDK 發行版,其提供長期支持,包括性能增強和安全修復,這部分其實對應於 Oracle 收費部分的功能。李三紅透露,Alibaba Dragonwell 目前支持 x86-64/Linux 平臺,主要針對的場景是數據中心大規模 Java 應用部署情況下,Java 應用穩定性、效率以及性能的優化與提高。


此次發佈的 Alibaba Dragonwell 8 預覽版本對應 OpenJDK 8 版本,與 Java SE 標準兼容。值得重點關注的三大特性如下:

  • 移植上游 Java 11 的 Java Flight Recorder (JFR) 功能。衆所周知,JFR 功能是 Oracle JDK 的商業收費功能,需要付費纔可使用,雖然後期通過 OpenJDK 11 開源,但 Java 8 的用戶羣體仍然十分龐大,因此阿里巴巴決定將該功能移植到 Alibaba Dragonwell 8 中供開發者使用。Java 開發人員可以通過 JFR 收集 JVM 運行過程中的詳細 profiling 信息,配合 Java Mission Control (JMC), 提高 Java 應用的問題診斷及性能優化效率;
  • 集成 JWarmup 技術。Warmup 問題一直是 Java 應用的最大難點之一,雖然阿里內部很早就有應對之法,但外部用戶很難觸達這一方案。如今,JWarmup 已作爲 Java Enhancement Proposal(JEP) 在 OpenJDK 立項,未來有望加入 Java 標準發行版。JWarmup 允許用戶在數據中心結合應用流量調度時機,動態提前預編譯 Java 代碼,從而有效減少由於傳統 Just-in-Time 預熱 (Warmup) 導致的 CPULoad 過高,Response Time 超時等問題;
  • 提供 GC 問題診斷等 Serviceability 方面的提高。


想必有心的開發者已經發現,目前 Alibaba Dragonwell 僅支持 Linux 平臺,這也是大部分數據中心所使用的操作系統。爲防止開發者出現誤解,此處需要特別說明:這並不影響 Java 的跨平臺特性。因爲,跨平臺指的是 Java 應用本身,JDK(包括 JVM)只是一個軟件,不同平臺有不同的版本,只要在對應平臺安裝好對應的 JDK。開發者可以在任意系統上開發 Java 應用,再部署到相應平臺運行字節碼文件即可。(開源後,阿里巴巴會提供詳細的中英文使用文檔說明)

後續規劃

未來,阿里巴巴希望每個季度進行一次版本迭代,下一階段也就是 3 個月後預計會發布 GA 版本。除此之外,阿里 JDK 技術團隊會對該項目進行持續維護和更新,並將緊密與 OpenJDK 社區合作,促進 Java 技術的發展。


此外,考慮到用戶實際需求以及 Java 8 羣體的龐大性,阿里巴巴後續也會考慮繼續將 OpenJDK 後續版本中的優秀功能移植到 Alibaba Dragonwell 中,類似於上文提到的 Java Flight Recorder 功能,供開發者在生產環境中提前使用。

 阿里巴巴與 Java

2018 年,阿里巴巴獲邀加入 JCP 最高執行委員會,任期兩年,這也是第一家加入 JCP 的中國企業。JCP 是一個開放的國際組織,是 Java 最高執行委員會,由 Java 開發者以及被授權者組成,主要職能是發展和更新 Java 技術規範,這意味着阿里巴巴在 Java 標準規範制定中具有一定話語權,並可以參與 Java 生態重大事件的決策。


據調查,阿里巴巴是全球最大的 Java 用戶之一,其內部擁有數量非常龐大的 Java 開發人員和服務器,這也是其業務發展使然。提到阿里巴巴,最容易想到的標籤就是“雙十一”。2018 年,天貓雙十一的總交易額最終定格在 2135 億,不到 2 小時就破了千億大關,支撐系統高效運行背後的最大功臣莫過於 Java。


隨着體量增長和業務需求複雜性的提升,阿里巴巴在 2004 年決定從 PHP 語言全面轉向 Java,並急需更高效的方式
來解決生產環境中的問題, 這逼着阿里巴巴不得不基於開源技術自我構建解決方案,指導 Java 開發人員快速定位並解決問題。


互聯網企業的節奏非常快,一週內甚至需要迭代很多版本,這其中就會出現很多問題,如果全部依靠官方更新來解決,整個戰線瞬間被拉長,業務根本等不起。這也是很多互聯網企業選擇基於開源版本的一個非常重要原因:自主可控,快速構建匹配業務發展的解決方案。


最早於 2010 年,阿里開始基於 OpenJDK 6 進行 JVM 定製優化,這是國內第一個優化、定製且開源的服務器版 Java 虛擬機。之後,阿里內部多個團隊陸續都開始參與了 JDK 研發(沒錯,最開始確實是多個團隊都在做),隨後,阿里巴巴考慮到 JDK 作爲一項重要的基礎設施,幾乎覆蓋了物流、金融、電商、新零售和菜鳥等所有業務場景,長期分開研發肯定是不行的,便將所有 JDK 團隊合併爲一個。


2015 年,統一後的阿里 JVM 團隊開始着手基於 OpenJDK 8 進行優化和定製工作,並推出瞭如今衆所周知的定製版 AJDK (Alibaba/AlipayJDK) ,這幾乎承載了淘寶、天貓,螞蟻,菜鳥的所有核心應用,並經受住了多次雙十一考驗。


那麼,如今開源的 Alibaba Dragonwell 與阿里內部使用的 AJDK 是一個東西嗎?


通過阿里的業務運行情況來看,AJDK 的功能和性能確實不錯,但 本次開源的 Alibaba Dragonwell 與 AJDK 還是有差異的。李三紅表示,Alibaba Dragonwell 是 AJDK 的開源版本,AJDK 技術的繼承者。目前開源的版本並未包含 AJDK 的所有功能,比如多租戶,Wisp 協程,ZenGC 等,主要是因爲開源一個技術會涉及到比較長時間的準備。


就目前公開的 Alibaba Dragonwell 8 預覽版本,阿里內部其實也進行過很多次討論,反覆準備、測試、溝通,確定後又耗費了半年時間才最終將該預覽版本開源,之後,阿里會考慮將 AJDK 的功能逐漸過渡到 Alibaba Dragonwell。顯然,這一工作需要時間。

各家 JDK 火熱,OpenJDK 咋辦?

不同於 Oracle JDK,OpenJDK 是基於 GPL v2/a Classpath Exception 的開源項目,從 Java 7 開始就是 Java SE 的官方參考實現。曾有 OpenJDK Committer 在接受採訪時表示,OpenJDK 有一個約定成俗的做法,經過多年免費支持後,Oracle JDK 版本的生命週期就進入結束期,之後由社區接手並主導後續更新。在此之前,Oracle 已經爲 JDK 8 免費提供了五年支持,也是時候進入社區維護階段了。


如今,國際不少主流廠商都在使用 OpenJDK,比如 Google、Twitter、Amazon 和阿里巴巴,並研發了基於此構建的 JDK 版本,這讓不少生態圈內的開發者出現擔憂:在不少用戶開始考慮選擇 OpenJDK 的時候,這些大廠是否還有心思參與整個社區的維護?


從阿里巴巴層面來看,李三紅在採訪中反覆強調一個觀點:

Alibaba Dragonwell 一定是 OpenJDK 的下游,每個 Alibaba Dragonwell 發行版都會同步上游最新更新,並經過阿里巴巴內部大規模的應用集羣測試。同時,阿里巴巴也會積極將 AJDK 上的技術積累貢獻到 OpenJDK,積極參與社區的項目更新和維護。


AWS 方面與這一觀點也頗爲類似,AWS 首席開源技術專家 Arun Gupta 曾在 AWS 開源博客上發佈公告稱:

我們期待與 OpenJDK 社區密切合作,共同開發 OpenJDK 8 和 11 的未來增強功能。


就筆者看來,這一狀態下,各大廠商推出的 JDK 勢必會與 OpenJDK 存在些許差異,這很容易理解:客戶生產環境所遇到的實際問題未必適合 OpenJDK 的改進;面對同一問題,OpenJDK 的解決方案未必與各大廠商的想法一致,這就需要多方進行友好協商,並逐漸形成良性機制,現在只是邁出了推動 OpenJDK 的第一步。

Java 歸途

選擇多了,生態似乎更“碎”了,堅守 Java 8 的開發者未來有意願向 OpenJDK 遷移嗎?

堅守的 Java 8 羣體

既然 Java 8 和 Oracle JDK 8 存在這樣那樣的問題,爲什麼開發者不大規模遷移至更新的版本呢?爲什麼 Alibaba Dragonwell 依舊從基於 OpenJDK 8 開始呢?這個問題的答案很簡單:

Java 8 是目前最被廣泛使用的版本,並且其羣體非常堅守!


在 Java 圈內,你會發現一個很有趣的現象:無論新版本給出的更新多麼誘惑,大部分 Java 開發者似乎並不感興趣,依舊堅持自己的選擇。確實,Java 8 是一個非常成功的版本,以至於很多開發者並不認爲需要更新其他版本,這可能與長期養成的習慣和固有信任有關係。


對此,李三紅認爲,Java 這麼多年發展過來,大多數開發者已經習慣信任官方 Oracle JDK,對社區 OpenJDK 版本關注不夠,所以從 Oracle JDK 到 OpenJDK 的切換需要一個過程。但隨着這些國際科技大廠的努力,OpenJDK 的生態一定會越來越完善,功能也會更加齊備,面對持續的安全更新和衆多大廠的深度參與,這個項目應該會成爲 Java 生態中的重要公共資源。

越來越“碎”的生態

很早之前,Java 生態就開始出現碎片化趨勢,這在 Oracle 收費之後似乎得到了加劇。此前,爲了減少對碎片化問題的潛在擔憂,AdoptOpenJDK 曾強烈鼓勵所有 OpenJDK 提供商將補丁提交給 OpenJDK。


對此,周經森認爲,就開發者而言,目前的選擇越來越多,這不見得一定是件壞事。並且,不同版本之間的兼容性其實非常高,遷移成本幾乎爲零,這不會給用戶使用造成額外負擔。不同的版本在性能優化、平臺支持等方面確實存在些許差異,開發者可以根據需要進行選擇,但阿里巴巴正在努力將這些技術推向上游,也就是整個 OpenJDK 生態,這一問題應該會在未來得到緩解。
原文鏈接:https://mp.weixin.qq.com/s/77qIBz648NApp3Dqldfw3A

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