前幾天的北京阿里云峰會俭令,阿里巴巴正式宣布對外開源 OpenJDK 長期支持版本 Alibaba Dragonwell。作為 Java 全球管理組織 Java Community Process (JCP) 的最高執(zhí)行委員會的唯一中國代表坷檩,以及 Oracle 之外的 Java 生態(tài)中為數(shù)不多的 OpenJDK 定制者,Alibaba Dragonwell 的開源是阿里巴巴向全球 Java 開發(fā)者的重磅獻(xiàn)禮有送。
這就是 Alibaba Dragonwell
Alibaba Dragonwell 是一款免費(fèi)的 OpenJDK 發(fā)行版淌喻。它提供長期支持,包括性能增強(qiáng)和安全修復(fù)雀摘。Alibaba Dragonwell 目前支持 X86-64/Linux 平臺裸删,在數(shù)據(jù)中心大規(guī)模 Java 應(yīng)用部署情況下, 可以大幅度提高穩(wěn)定性阵赠、效率以及性能涯塔。Alibaba Dragonwell 與 Java SE 標(biāo)準(zhǔn)兼容肌稻,用戶可以使用 Alibaba Dragonwell 開發(fā)和運(yùn)行 Java 應(yīng)用程序。
此次匕荸,阿里巴巴發(fā)布的 Alibaba Dragonwell 8 預(yù)覽版本對應(yīng) OpenJDK 8 的版本爹谭。Alibaba Dragonwell的開源為全球 Java 開發(fā)者提供了新選擇。同時(shí)對于阿里云榛搔,Alibaba Dragonwell 會針對 LTS 的兩個(gè)版本 Java 8 和 Java 11 隨阿里云 VM 鏡像發(fā)布诺凡,免費(fèi)提供給阿里云客戶使用。
AJDK 的優(yōu)勢繼承者——Alibaba Dragonwell
Alibaba Dragonwell 的前身是阿里巴巴內(nèi)部使用的 AJDK(Alibaba/AlipayJDK)践惑。早在 2010 年腹泌,阿里巴巴就開始了基于 OpenJDK 開源軟件的開發(fā),并在 2015 年著手 OpenJDK 8 的優(yōu)化和定制工作尔觉。
AJDK 作為阿里巴巴 Java 應(yīng)用的基石凉袱,支撐了阿里經(jīng)濟(jì)體內(nèi)所有的 Java 業(yè)務(wù),經(jīng)受了多次雙十一考驗(yàn),積累了大量業(yè)務(wù)場景下的實(shí)踐經(jīng)驗(yàn)侦铜。作為在 Oracle 之外的 Java 生態(tài)中的 OpenJDK 定制者专甩, 阿里一直不遺余力持續(xù)開拓 Java 新疆界:
2015 年 10月,AJDK8.0.0 發(fā)布钉稍,實(shí)現(xiàn)多租戶涤躲,支持高密度部署以及資源隔離。
2016 年 5月嫁盲,AJDK 8.1.1 發(fā)布篓叶,支持 JWarmup,支持 Java 應(yīng)用在運(yùn)行時(shí)提前編譯。
2016 年10月羞秤,AJDK 8.2.4 發(fā)布,實(shí)現(xiàn)Wisp協(xié)程 左敌,有效提升 Java 應(yīng)用性能 30% 以上瘾蛋。
2018 年 1 月,AJDK 8.4.7 發(fā)布矫限,根據(jù)阿里大數(shù)據(jù)場景的定制版 ZenGC (G1 based)發(fā)布哺哼。
2018 年 2月,發(fā)布基于 AJDK 的 Java Profiling 工具 Java Event Tracing(JET) 叼风。
作為 AJDK 的開源版本取董, Alibaba Dragonwell 沿襲了 AJDK 的技術(shù)優(yōu)勢以及實(shí)踐場景下的技術(shù)經(jīng)驗(yàn)。開源后无宿,Alibaba Dragonwell 的每次發(fā)布都將會同步 OpenJDK 8 的最新更新(OpenJDK 8u)茵汰,并將基于阿里的工程實(shí)踐,加入阿里的’value-add’ 功能孽鸡。Alibaba Dragonwell 版本會通過 JCK 兼容套件測試蹂午,確保 Java 的兼容性栏豺。
Alibaba Dragonwell 與 OpenJDK
Oracle 宣布 Java8 在 2019 年 1月之后停止更新,另外 Java11 及以后版本將不再提供免費(fèi)的 long-term support (LTS) 支持豆胸“峦荩可以預(yù)見,未來將有越來越多 Java 開發(fā)者轉(zhuǎn)向使用 OpenJDK晚胡。阿里巴巴長期致力于與 Java 技術(shù)推進(jìn)的聚集地——OpenJDK 社區(qū)密切合作灵奖,Alibaba Dragonwell 將保持與社區(qū)版本的同步,并充分融合阿里巴巴業(yè)務(wù)實(shí)踐與技術(shù)經(jīng)驗(yàn)估盘,為 Java 開發(fā)者提供一個(gè)良好的應(yīng)對方案瓷患。
Alibaba Dragonwell 8 的優(yōu)勢
1、移植上游 Java 11 的 Java Flight Recorder (JFR) 功能忿檩,Java 開發(fā)人員可以通過 JFR 收集 JVM 運(yùn)行過程中的詳細(xì)的 profiling 信息尉尾,配合 Java Mission Control(JMC), 大幅提高 Java 應(yīng)用的問題診斷及性能優(yōu)化效率;
2燥透、集成 AJDK 的 JWarmup 技術(shù)沙咏,JWarmup 已作為 Java Enhancment Proposal(JEP) 在 OpenJDK 立項(xiàng),未來有望加入 Java 的標(biāo)準(zhǔn)發(fā)行版中班套。JWarmup 在數(shù)據(jù)中心可以結(jié)合應(yīng)用的流量調(diào)度時(shí)機(jī)肢藐,動態(tài)預(yù)編譯Java 代碼,可以有效減少由于傳統(tǒng)的 Just-in-Time 的預(yù)熱(Warmup)導(dǎo)致的 CPU load 過高吱韭,rt 超時(shí)等問題吆豹。
3、提供在 GC 問題診斷 Servicibility 方面的提高理盆, 詳細(xì)信息參考 Alibaba Dragonwell 8 User Guide https://github.com/alibaba/dragonwell8/wiki/阿里巴巴Dragonwell8用戶指南
Alibaba Dragonwell Roadmap
作為 OpenJDK 的下游痘煤,Alibaba Dragonwell 將在每季度發(fā)布新版本主要包含:
社區(qū)上游安全/關(guān)鍵 bug 修復(fù)
阿里定制的功能,Bug修復(fù)等猿规。
基于阿里工程實(shí)踐的 Java 8 以后版本的功能移植
我們計(jì)劃逐步把阿里巴巴內(nèi)部使用 AJDK 積累的技術(shù)創(chuàng)新開源出來貢獻(xiàn)給社區(qū)衷快。同時(shí),我們預(yù)計(jì) 2019 年年底發(fā)布 Alibaba Dragonewell 11姨俩。
Github Link:
https://github.com/alibaba/dragonwell8
二蘸拔、特性:
1、垃圾回收:使用CMS (-XX:+UseConcMarkSweep) 作為默認(rèn)GC策略环葵。
2调窍、JFR(Java Flight Recorder):
(1)從JDK11中backport到了Dragonwell-8版本中。
(2)添加了EnbleJFR命令行選項(xiàng)张遭,默認(rèn)關(guān)閉邓萨,用于徹底隔離JFR相關(guān)邏輯,只有添加-XX:+EnableJFR到JVM命令行才可以使用JFR特性。
3先誉、Serviceability支持:
(1)jmap的dump子命令支持“mini”選項(xiàng)湿刽,可以在做heapdump時(shí)忽略掉原始類型數(shù)組的內(nèi)容,詳情請參考jmap工具的幫助信息褐耳。
(2)增加參數(shù): PrintYoungGenHistoAfterParNewGC诈闺,該用于打印一次ParNew GC之后young區(qū)對象的histogram。該參數(shù)可以用jinfo動態(tài)打開铃芦。
(3)增加參數(shù)PrintGCRootsTraceTime用于打印一次ParNew GC的具體耗時(shí)雅镊,主要用于排查長的ygc問題。該參數(shù)可以用jinfo動態(tài)打開關(guān)閉刃滓。
(4)增加參數(shù):ArrayAllocationWarningSize仁烹,默認(rèn)值為512M。當(dāng)分配的對象大小超過該值的時(shí)候咧虎,標(biāo)準(zhǔn)輸出里會顯示分配的堆棧卓缰。該參數(shù)可以通過jinfo動態(tài)修改。
4砰诵、JWarmUp:
(1)增加參CompilationWarmUpRecording啟用JWarmUp的記錄模式征唬,在指定的時(shí)間后,JVM會生成JWarmUp profile茁彭,包含JVM中的已加載類及熱點(diǎn)方法总寒。
(2)增加參數(shù):CompilationWarmUp啟用JWarmUp的預(yù)熱編譯模式,根據(jù)指定的JWarmUp profile加載之前記錄的熱點(diǎn)方法理肺,通過API可以通知JVM預(yù)熱編譯熱點(diǎn)方法摄闸。
(3)JDK中提供了:com.alibaba.jwarmup.JWarmUp類,應(yīng)用可以使用該JAVA API控制JWarmUp妹萨,例如通知JVM開始WarmUp編譯年枕,檢查編譯情況,通知JVM退優(yōu)化預(yù)熱編譯的方法乎完。
三画切、安裝Alibaba Dragonwell:
1、下載軟件包:
下載地址:
https://github.com/alibaba/dragonwell8/releases
下載版本:
Alibaba_Dragonwell8_Linux_x64_8.0-preview.tar.gz
2囱怕、解壓軟件包:# tar -xf
Alibaba_Dragonwell8_Linux_x64_8.0-preview.tar.gz -C /usr/local
備注:解壓后生成的目錄名為j2sdk-image
3、配置環(huán)境變量:
# vim /etc/profile.d/jdk.shexport JAVA_HOME=/usr/local/j2sdk-imageexport PATH=$JAVA_HOME/bin:$PATH# . /etc/profile.d/jdk.sh
4毫别、查看JAVA版本:# java -version
Alibaba Dragonwell FAQ
在宣布開源前夕娃弓,InfoQ 記者對阿里云智能基礎(chǔ)產(chǎn)品事業(yè)部資深技術(shù)專家李三紅、阿里云智能基礎(chǔ)產(chǎn)品事業(yè)部研究員 Kingsum Chow (周經(jīng)森)進(jìn)行了采訪岛宦,以下就大家關(guān)心的問題做一下整理台丛。
Q1.Alibaba Dragonwell 命名有什么由來?
“Dragonwell”中文譯為龍井,象征著中國的茶文化挽霉,又恰好是杭州特色(阿里巴巴總部所在地)防嗡;“well”一詞通常被描述為水源匯聚在一起供大家享用,我們希望可以集合所有開發(fā)者的力量不斷完善該項(xiàng)目并最終貢獻(xiàn)給所有用戶侠坎。
Q2.開源的 Alibaba Dragonwell 與阿里內(nèi)部使用的 AJDK 是一個(gè)東西嗎蚁趁?
本次開源的 Alibaba Dragonwell 與阿里內(nèi)部使用的 AJDK 還是有差異的。Alibaba Dragonwell 是 AJDK 的開源版本实胸,AJDK 技術(shù)的繼承者他嫡。目前開源的版本并未包含 AJDK 的所有功能,比如多租戶庐完,Wisp 協(xié)程钢属,ZenGC 等。之后门躯,會考慮將 AJDK 的功能逐漸過渡到 Alibaba Dragonwell淆党。
Q3.Alibaba Dragonwell 與 OpenJDK 關(guān)系是怎么樣的?阿里巴巴是否會持續(xù)維護(hù) OpenJDK 社區(qū)讶凉?
Alibaba Dragonwell 一定是 OpenJDK 的下游染乌,每個(gè) Alibaba Dragonwell 發(fā)行版都會同步上游最新更新徙鱼,并經(jīng)過阿里巴巴內(nèi)部大規(guī)模的應(yīng)用集群測試信卡。同時(shí),阿里巴巴也會積極將 AJDK 上的技術(shù)積累貢獻(xiàn)到 OpenJDK阅仔,積極參與社區(qū)的項(xiàng)目更新和維護(hù)域醇。我們期待與 OpenJDK 社區(qū)密切合作台谊,共同推動 OpenJDK 的發(fā)展。
Q4. 如何看待Java 版本的升級譬挚? 如何看待 Oracle JDK 與 OpenJDK 的關(guān)系锅铅?
Java 8 是目前最被廣泛使用的版本,并且其群體非常堅(jiān)守减宣。在 Java 圈內(nèi)盐须,你會發(fā)現(xiàn)一個(gè)很有趣的現(xiàn)象:無論新版本給出的更新多么誘惑,大部分 Java 開發(fā)者似乎并不感興趣漆腌,依舊堅(jiān)持自己的選擇贼邓。確實(shí),Java 8 是一個(gè)非常成功的版本闷尿,以至于很多開發(fā)者并不認(rèn)為需要更新其他版本塑径,這可能與長期養(yǎng)成的習(xí)慣和固有信任有關(guān)系。Java 這么多年發(fā)展過來填具,大多數(shù)開發(fā)者已經(jīng)習(xí)慣信任官方 Oracle JDK统舀,對社區(qū) OpenJDK 版本關(guān)注不夠,所以從 Oracle JDK 到 OpenJDK 的切換需要一個(gè)過程。但隨著這些國際科技大廠的努力誉简,OpenJDK 的生態(tài)一定會越來越完善碉就,功能也會更加齊備,面對持續(xù)的安全更新和眾多大廠的深度參與闷串,這個(gè)項(xiàng)目應(yīng)該會成為 Java 生態(tài)中的重要公共資源瓮钥。
你對阿里的OpenJDK會有怎樣的看法,歡迎在下方討論和留言~
閱讀更多
如果對技術(shù)開發(fā)比較感興趣窿克,可以和我一塊交流技術(shù)骏庸,技術(shù)號id:codeGoogler