オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用

2018年4月20日

JavaやJavaScriptなどには、それぞれその言語を実行するためのランタイムが存在します。JavaならJavaVM、JavaScriptならJavaScriptエンジンといった具合です。

米オラクルがオープンソースで公開した「GraalVM」は、これまで言語ごとに個別に用意されていたランタイムを統合し、単一の高性能なVMにするという同社の研究の結果開発された汎用仮想マシンあるいは汎用ランタイムです(米オラクルのブログ日本語訳)。

GraalVM

GraalVMのWebサイトには、次のような説明が記されています。

GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Kotlin, and LLVM-based languages such as C and C++.

GraalVMはJavaScript、Python、Ruby、R、JavaやScala、KotlinなどJVMベースの言語、CやC++のようなLLVMベースの言語などを実行するためのユニバーサルな仮想マシンです。

今回リリースされた「GraalVM 1.0」では、前述の通りJavaVMベースの言語(Java、Scala、Groovy、Kotlinなど)とJavaScript、CやC++、Rustで記述されたコードから生成されたLLVMのビットコード、Ruby、R、Pythonなどが実行可能とされています。

ただし現時点では本番利用の場合、JavaVMベースの言語と(Node.jsを含む)JavaScriptが推奨されており、R、Ruby、Python、LLVMベースの言語はまだ実験段階とのこと。

それぞれの言語のランタイムとしての利用法は、「Oracle Labs GraalVM: Programming Languages and Runtimes Overview」で説明されています。

GraalVMのメリットとは?

多言語のランタイムを単一の仮想マシンで実現できるメリットは、組織内でさまざまな言語を用いていたとしても同一ランタイムのデプロイで済むため構成がシンプルになること。そして運用においては、これまでランタイムごとに異なるデバッガやプロファイラを用意し、利用方法を覚えなければならなかったのに比べ、どのような言語でも単一のデバッガ、プロファイラ、ヒープビューアなどが利用できることなどが挙げられます。

また、アプリケーションが複数の言語で開発される場合も、言語間の連携が容易になります。

GraalVM removes the isolation between programming languages and enables interoperability in a shared runtime.

GraalVMはプログラミング言語間の分断を取り除き、単一ランタイム内の相互運用を実現します。

GraalVMはJavaVMやNode.jsではV8を置き換えて利用することができるとされているほか、Javaではプリコンパイルによるネイティブバイナリの生成も可能です。

For JVM-based languages, GraalVM offers a mechanism to create precompiled native images with instant start up and low memory footprint. The image generation process runs a static analysis to find any code reachable from the main Java method and then performs a full ahead-of-time (AOT) compilation.

GraalVMはJavaVMベースの言語では、すぐに起動してメモリフットプリントの小さい、プリコンパイルされたネイティブイメージを作成する機能を提供します。このイメージを生成するプロセスはメインのJavaメソッドから到達可能なコードを見つけるために静的解析を行い、全体を事前コンパイルします。

TwitterはすでにGraalVMを本番投入していると紹介されています。

Twitter is one of the companies deploying GraalVM in production already today for executing their Scala-based microservices. The aggressive optimizations of the GraalVM compiler reduces object allocations and improves overall execution speed. This results in fewer garbage collection pauses and less computing power necessary for running the platform.

TwitterはGraalVMをすでに本番投入している企業の1社であり、Scalaベースのマイクロサービスを実行しています。GraalVMコンパイラの積極的な最適化により、オブジェクトの配置や全体の実行速度が改善されました。これによってガベージコレクション処理による一時的な処理の停止が減少し、プラットフォームの実行に必要なコンピュータの能力もより小さくて済むようになりました。

GraalVMはオープンソースで開発されており、無料のCommunity Editionと、セキュリティやスケーラビリティを高めた商用版のEnterprise Editionが提供されます。

あわせて読みたい

Java JavaScript プログラミング言語 GraalVM Oracle Python Ruby




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本