當前位置:
首頁 > 科技 > GraalVM:新一代高性能跨語言虛擬機

GraalVM:新一代高性能跨語言虛擬機

導語: 虛擬機(VM)想必大家都非常了解和熟悉,例如JVM,但支持多語言的VM卻未必熟悉。本文作者介紹了新一代高性能跨語言的虛擬機GraalVM,主要內容包括VM的特性、和JDK8、9的性能對比,比著重介紹了作者在試用native特性時遇到的問題。

上周Oracle發布了GraalVM [1]。如網站上所述:


高性能跨語言虛擬機

GraalVM是一種通用的虛擬機,用於運行JavaScript、Python 3、Ruby、R、基於JVM的語言,如Java、Scala、Kotlin和基於LLVM的語言,如C和C++。

GraalVM消除了編程語言之間的隔離,並支持共享運行時的互操作性。它可以獨立運行,也可以在OpenJDK、Node、Oracle或者MySQL上運行。

有幾個因素讓人們想從正常的JRE轉到Graal VM:

  1. 其中一個可能是它聲稱的改進的性能。

  2. 另一個可能是多語言特性,透明地混合和匹配支持的語言。

  3. 最後一個是前者的混合:在本地支持下,可以將Java應用程序作為本地代碼。

作為一個極客,我想先快速地看一看。下面是我的一些使用體驗。

是否用企業版?

第一步是下載Graal VM [2]。GraalVM有兩個版本:

社區版

  • 所有開源許可

  • 免費供生產使用

企業版

  • 測評和其他非生產用途免費使用

  • 對於商業使用和支持選項,應該聯繫銷售團隊。

第一個比較驚訝的: 社區版本只能在Linux操作系統使用。對於OSX操作系統,只能使用企業版。目前還沒有適用於Windows的版本。

Graal VM結構

Graal VM結構類似於傳統的pre-9 Java JDK。

GraalVM:新一代高性能跨語言虛擬機

因此,GraalVM可以替代任何標準JDK。

運行 java –version輸出結果如下:

GraalVM:新一代高性能跨語言虛擬機

PS: 到目前為止,GraalVM僅限於Java8功能。

一些性能基準

下一步是檢查性能是否有改善。我使用JMH [3]框架來進行性能測試。

我使用以下代碼:

GraalVM:新一代高性能跨語言虛擬機

使用java –jar target/benchmarks.jar命令分別在三個不同的JREs上進行測試。

GraalVM

GraalVM:新一代高性能跨語言虛擬機

Oracle JDK 8

GraalVM:新一代高性能跨語言虛擬機

Oracle JDK 9

GraalVM:新一代高性能跨語言虛擬機

總結:

GraalVM:新一代高性能跨語言虛擬機

通過數據可以得到:在性能方面,Graal VM和Java 8之間的差距並不顯著。但它們和Java 9的差距比較明顯。另外,Java 9有最高的標準偏差。

繼續體驗本地方法

GraalVM可以通過native-image命令將JAR轉換為本地可執行文件。我嘗試著用之前創建的JAR來測試。


native-image -H:+JNI -jartarget/benchmarks.jar

然而,在嘗試運行新創建的二進位文件時,我遇到了下面的錯誤信息:

GraalVM:新一代高性能跨語言虛擬機

更糟糕的是,嘗試為Spring Pet Clinic [4]創建本地鏡像時,遇到下面的錯誤:

GraalVM:新一代高性能跨語言虛擬機

GraalVM:新一代高性能跨語言虛擬機

GraalVM:新一代高性能跨語言虛擬機

GraalVM不支持動態類載入。

我嘗試了H2和HSQLDB的獨立jar文件,但沒有用。在這兩種情況下,我得到了以下堆棧:

GraalVM:新一代高性能跨語言虛擬機

結論

GraalVM有很多很有前途的功能,包括多語言,儘管我現在對它不太感興趣。然而,從我有限的使用體驗來看,它仍然有改進的空間。性能方面,Graal VM要好於Java9。此外,本地方法鏡像在目前的狀況下,用處比較有限。恕我直言,它目前還處在MVP的階段。我急切地等待下一個版本,希望他們能在上面的問題上有所改進。

了解更多:

  • GraalVM主頁 [1]

  • GraalVMgithub [5]

參考鏈接

[1] http://www.graalvm.org/

[2] https://www.graalvm.org/downloads

[3] http://openjdk.java.net/projects/code-tools/jmh/

[4] https://github.com/nfrankel/spring-petclinic

[5] https://github.com/oracle/graal

活動預告:

6 月 1 ~ 2 日,GIAC 全球互聯網架構大會將於深圳舉行。GIAC 是高可用架構技術社區推出的面向架構師、技術負責人及高端技術從業人員的技術架構大會。今年的 GIAC 已經有騰訊、阿里巴巴、百度、今日頭條、科大訊飛、新浪微博、小米、美圖、Oracle、鏈家、唯品會、京東、餓了么、美圖點評、羅輯思維、ofo、迅雷、曠視LinkedInPivotal 等公司專家出席。

本期 GIAC 大會上,微服務部分精彩的議題如下:

GraalVM:新一代高性能跨語言虛擬機

參加 GIAC,盤點2018最新技術。點擊「閱讀原文」了解大會更多詳情。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 高可用架構 的精彩文章:

「熱點」Service Mesh利器:NGINX將支持gRPC

TAG:高可用架構 |