2018年4月のバージョン1.0 RC1のリリースを皮切りに、数々のリリース候補を重ねて1年以上、Oracleはついに、Oracle Labsが開発した多言語仮想マシンとプラットフォームである、GraalVM 19.0のGAバージョンをリリースした。1年間のRCリリースで追加された機能には、非推奨となったNashornエンジン(JEP 335)からGraalVMへのマイグレーション、Pythonのnumpyライブラリの統合、マネージモードLLVMインタープリタ、SubstrateVM経由でネイティブイメージとしてデプロイ可能なGraalVMコンパイラlibgraalの導入、などがある。GraalVM Enterprise EditionもOracle Labsから公式にリリースされた。
GraalVMは、Javaで記述されたジャスト・イン・タイムコンパイラのGraal、Javaアプリケーションをアヘッド・オブ・タイムで実行可能イメージにコンパイル可能なフレームワークSubstrateVM、言語インタープリタ構築のためのオープンソースツールキットとAPIであるTruffleで構成されている。
GraalVM 19.0のコアコンポーネントには以下のものが含まれる。
- OpenJDK 1.8.0_212に準拠したHotSpot JVM
- 多言語(polyglot)機能を備えたNodeJS 10.15.2
- Rhino、および廃止されたNashornの代替として、ECMAScript 2019に準拠したJavaScriptエンジン。Oracle Labsでは、GraalVMとNashornの違いを説明するマイグレーションガイドを用意している
- LLVMバージョン6.0用ランタイム
- GraalVM Updater、
gu
— Native Imageなど、GraalVMのコアディストリビューションに含まれていないコンポーネントや、Python、Ruby、Rのサポートをダウンロードするユーティリティ。
native-image
ユーティリティは、GraalVMリリース候補のディストリビューションには含まれていたが、GraalVM 19.0では削除され、gu
ユーティリティを使用して別途インストールが必要になっている。gu
ユーティリティは、SDK ManやHomebrewなど、一般的なパッケージマネージャと同じような機能を持つ。例えば、Native ImageあるいはPythonをインストールするには、次のように使用する。
$ gu install native-image
$ gu install python
安定版リリースであることを反映して、Oracle Labsでは、GraalVMのバージョンを1.0 RCxxから、メジャーリリースの年と定期的なアップデートを表す19.xに変更した。GraalVMの新機能すべての詳細は、リリースヒストリに記載されている。
GraalVM Enterprise Edition
GraalVM Enterprise Editionは、パフォーマンス、セキュリティ、スケーラビリティを必要とする、ミッションクリティカルな実運用アプリケーション向けに開発された。Community Editionに対してEnterprise Editionが提供するメリットには、高いパフォーマンスと縮小されたフットプリント、ネイティブコードのサンドボックス機能、商用サポートオプションなどがある。
GraalVM Enterpriseに組み込まれている最適化アルゴリズムは、ネイティブにコンパイルされたコードの再配置により、20パーセントのパフォーマンス改善を実現する。
以下に示すのは、GraalVM Enterpriseのアーキテクチャである。
GraalVMリファレンスマニュアルは、Java(および関連するJVM言語)、JavaScript、Python、Ruby、Rの各アプリケーションでGraalVMの使用を考えている開発者に対して、出発点を提供する。さらにOracleは、Truffleシステム構造、SubstrateVM実行モデル、マイクロベンチマークに関する詳細を論じたプレゼンテーション"Safe and Efficient Hybrid Memory Management for Java"も公開している。
GraalVMはMicronaut、Helidon、QuarkusなどのJava/JVMマイクロサービスフレームワークと統合することができる。
リソース
- Announcing GraalVM: Run Programs Faster Anywhere -- Thomas Wuerthinger、GraalVM開発チーム (2018/4/17)
- オラクル、GraalVM 1.0をリリース -- InfoQ (2018/4/27)
- Oracle GraalVM Announces Support for Nashorn Migration -- Christian Wirth (2018/7/19)
- Announcing GraalVM 19.0 -- Oleg Šelajev (2019/5/9)
- Helidon Flies Faster with GraalVM -- Dmitry Kornilov (2019/4/17)
- Introducing the Tracing Agent: Simplifying GraalVM Native Image Configuration -- Christian Wimmer (2019/6/5)
- JVMの比較を目的とする新しいパフォーマンスベンチマーク"Renaissance" -- InfoQ (2019/6/6)