IBM開源JVM實(shí)現(xiàn)OpenJ9,并提交Eclipse基金會托管

責(zé)任編輯:editor006

作者:張衛(wèi)濱

2017-09-27 17:56:08

摘自:INFOQ

近日,IBM將其J9 Java 虛擬機(jī)命名為OpenJ9,托管至Eclipse基金會并在GitHub上開源,OpenJ9的定位是企業(yè)級的開源Java虛擬機(jī)。

近日,IBM將其J9 Java 虛擬機(jī)命名為OpenJ9,托管至Eclipse基金會并在GitHub上開源,OpenJ9的定位是企業(yè)級的開源Java虛擬機(jī)。

在2006年9月20舊金山舉辦的JavaOne上,IBM就曾宣布開源其Java虛擬機(jī)OpenJ9,該項(xiàng)目的領(lǐng)導(dǎo)者Dan Heidinga做過J9相關(guān)的技術(shù)演講,闡述了該虛擬機(jī)的技術(shù)架構(gòu)和相關(guān)的生態(tài)系統(tǒng)。當(dāng)時,IBM計劃隨Java 9一起開源其OpenJ9。根據(jù)Dan Heidinga的描述,OpenJ9的核心價值在于高性能、高可用性和適用性。OpenJ9的技術(shù)架構(gòu)如下所示:

為了實(shí)現(xiàn)性能的提升,OpenJ9在數(shù)據(jù)結(jié)構(gòu)、類加載、線程管理、解釋器等方面都進(jìn)行了優(yōu)化。按照IBM的規(guī)劃,OpenJ9與Eclipse OMR的關(guān)系如下圖所示:

其中,Eclipse OMR是用于構(gòu)建可靠、高性能語言運(yùn)行時的跨平臺組件。這組件使用C和C++編寫,借助它能夠構(gòu)建跨不同硬件和操作系統(tǒng)平臺的語言運(yùn)行時,該項(xiàng)目也在GitHub開源。根據(jù)RednaxelaFX的解讀,OMR是最上游,OpenJ9基于OMR構(gòu)建出一個完整的JVM,OpenJ9 + OpenJDK Java Class Library構(gòu)成出一個完整的Java運(yùn)行時環(huán)境,然后在此基礎(chǔ)上添加IBM的特化功能最終構(gòu)成IBM發(fā)行版J9及其配套庫。

關(guān)于公眾可能關(guān)注的問題,Eclipse OpenJ9在官網(wǎng)上進(jìn)行了回應(yīng) 。

Eclipse OpenJ9 是 OpenJDK 的替代方案嗎?

不是。Eclipse OpenJ9 是一個 Java 虛擬機(jī)(JVM),也就是運(yùn)行 Java 應(yīng)用程序的引擎,而 OpenJDK 是一個完整的開發(fā)工具包,除了JVM還包含其他的組件比如Java類庫。默認(rèn)情況下,OpenJDK 使用名為 Hotspot 的 JVM進(jìn)行構(gòu)建。簡單來說,OpenJ9 是JVM的替代方案,可將其包含到 OpenJDK的二進(jìn)制文件中。

Eclipse OpenJ9與Hotspot 的差別在哪里?

Hotspot 和 Eclipse OpenJ9 都是可以包含在 OpenJDK中的 Java 虛擬機(jī),但它們具有不同的功能。按照不同的構(gòu)建過程,你可以讓OpenJDK二進(jìn)制文件中包含 Eclipse OpenJ9 ,也可以包含 Hotspot。

OpenJ9中的J9代表什么含義呢?

為了澄清公眾的誤解,J9 != Java 9。如果讀者對它名字的來源感興趣的話,可以參考這篇博客文章。

既然如此,我們?yōu)槭裁匆褂?Eclipse OpenJ9 而不是默認(rèn)的 JVM呢?

如果你正在為應(yīng)用程序?qū)ふ移髽I(yè)級的運(yùn)行時環(huán)境,那么建議使用 Eclipse OpenJ9 構(gòu)建 OpenJDK。這個高性能、可擴(kuò)展的虛擬機(jī)是眾多 IBM 企業(yè)軟件產(chǎn)品的核心。你還可以進(jìn)一步地優(yōu)化OpenJ9,提升特定場景下Java應(yīng)用的性能。

為什么 IBM 將他們的 J9 虛擬機(jī)貢獻(xiàn)給了 Eclipse 基金會?

IBM 公開承諾要將創(chuàng)新帶入開源開發(fā)社區(qū)。多年以來,J9虛擬機(jī)是Java版IBM SDK的核心,將它開源,闡明了IBM的兌現(xiàn)承諾的決心。
OpenJ9 虛擬機(jī)構(gòu)建在 Eclipse OMR 項(xiàng)目的核心技術(shù)之上,OMR 是由 IBM 在 2016 年貢獻(xiàn)給 Eclipse 基金會的。IBM 持續(xù)地投入資源到Eclipse OpenJ9 和 Eclipse OMR項(xiàng)目中,以確保企業(yè)級產(chǎn)品能夠利用最新的硬件技術(shù)。

OpenJ9的網(wǎng)站上提供了預(yù)構(gòu)建版本的(通過AdoptOpenJDK下載)以及自行打包構(gòu)建的完整教程。OpenJ9本身對Java應(yīng)用進(jìn)行了一些優(yōu)化,我們無需再調(diào)整命令行選項(xiàng)。如果你想配置不同的垃圾收集器或者要探索特定硬件的特性的話(比如GPU),那么可以讀取IBM知識中心上已有的用戶文檔。

OpenJ9的關(guān)注點(diǎn)主要在性能方面,因此Phoronix Media站點(diǎn)的創(chuàng)始人Michael Larabel運(yùn)行了一些快速的基準(zhǔn)(Benchmark)測試,以了解OpenJ9和Hotspot之間性能的差異。

在測試中,他分別使用了將OpenJ9打包至OpenJDK 9的構(gòu)建版本以及當(dāng)時的OpenJDK 9 Hotspot構(gòu)建版本(作者在進(jìn)行測試時,正式版本的Java 9尚未發(fā)布——編者注),作為參考,還使用了OpenJDK 8 Hotspot構(gòu)建版本。這三個JDK都可以通過AdoptOpenJDK站點(diǎn)獲取預(yù)先構(gòu)建好的版本。

Michael使用兩臺Linux機(jī)器進(jìn)行了快速的基準(zhǔn)測試,其中一臺機(jī)器的處理器是Intel Core i9 7900X,操作系統(tǒng)是基于Linux 4.13 kernel的Ubuntu 17.04。另外一臺機(jī)器是雙插槽 Tyan 服務(wù)器,處理器是Xeon Gold 6138,操作系統(tǒng)是Debian GNU/Linux 9.1。每臺機(jī)器上都使用這三個OpenJDK進(jìn)行了測試,有一些Java基準(zhǔn)測試是通過Phoronix Test Suite運(yùn)行的。

首先看一下Core i9 7900X機(jī)器的結(jié)果。Michael先在這三個OpenJDK上執(zhí)行了j2dbench測試,這是一個關(guān)注圖形處理的基準(zhǔn)測試。在使用OpenJ9時,文本渲染的速度明顯比較慢,而在另外兩個基準(zhǔn)測試中,它與OpenJDK性能差別不大。OpenJDK 8和9本身的差別也不大。該測試結(jié)果如下圖所示:

同時,他還運(yùn)行Java版本的SciMark2進(jìn)行一些數(shù)學(xué)相關(guān)的基準(zhǔn)測試,結(jié)果如下:

至少就目前來看,OpenJ9的性能要比較明顯地落后于Hotspot。

在基于Java的Bork文件加密方面,Hotspot也更快:

  在這些測試版本中,JMH的性能表現(xiàn)也非常類似:

在雙插槽的Xeon Gold Tyan服務(wù)器上,Hotspot/OpenJ9的基準(zhǔn)測試結(jié)果非常類似,可以參考。

OpenJ9是一個非常新的JVM項(xiàng)目,幾個月之后再來評估它的性能也許更合理一些。在這篇性能對比文章的評論區(qū),有些讀者發(fā)表了一些有價值的評論。有人認(rèn)為,不應(yīng)該像使用OpenJDK那樣使用J9,JVM的調(diào)優(yōu)知識對于性能改善至關(guān)重要。J9針對x86架構(gòu)可能還不太成熟,或者需要一些配置選項(xiàng)。J9最初是針對大規(guī)模System-Z機(jī)器上的應(yīng)用設(shè)計的,因此它需要時間來對JVM進(jìn)行預(yù)熱,從而確定哪些字節(jié)碼需要進(jìn)行優(yōu)化,這個“分析器”需要根據(jù)應(yīng)用的運(yùn)行來進(jìn)行調(diào)整。如果要在x86計算機(jī)或小型設(shè)備上運(yùn)行J9的話,毫無疑問需要調(diào)整一些JVM的配置。

隨著OpenJ9開源資料的完善,我們會對這個JVM有更多的了解,相信它也會對整個Java社區(qū)的發(fā)展增加新的推動力。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號