Oracle は、Java SE サブスクリプションに GraalVM を無料で使用できる権利を追加することで特典を強化しました。GraalVM は、Big Red によれば、ほぼあらゆるものをより高速に、どこでも実行できる新しい汎用仮想マシンです。
読者:The Register紙は、GraalVMが今日まで私たちの目に留まらなかったと告白しています。プロジェクトのGitHubページには、GraalVMは「JavaScript、Python、Ruby、R、Java、Scala、Clojure、KotlinなどのJVMベース言語、そしてCやC++などのLLVMベース言語で書かれたアプリケーションを実行するためのユニバーサル仮想マシン」であると記載されています。
Graal は、2019 年後半にバージョン 19.0 としてリリースされました。この奇妙な数字は、Maxine Research VM として知られるようになった古い Sun プロジェクトから派生したものだからかもしれません。
バージョン 21.0 は 2021 年 1 月にリリースされ、Java で記述された JVM 実装を提供する、espresso という新しいインストール可能なコンポーネントが搭載されています。
プロジェクトのFAQでは、「OpenJDK、Oracle JDK、Node.jsプラットフォームに組み込んだり、スタンドアロンで実行したり、Oracle Databaseなどのデータストアに組み込んだり」できると説明されています。Graalは、Javaやその他のJVM言語で記述されたアプリケーションの実行を高速化するだけでなく、JavaScript、Ruby、Python用のランタイムも提供しています。
Oracleの新しいJava SEサブスクリプション:コードとサポートが月額25ドル/プロセッサ
続きを読む
GraalVM は、優れたコンパイラと事前にコードをコンパイルする機能により、アプリケーションの速度を向上させることを約束します。
「ネイティブイメージとは、Javaコードを事前にネイティブイメージと呼ばれるスタンドアロンの実行可能ファイルにコンパイルする技術です」とGraalは説明しています。「この実行可能ファイルには、アプリケーションクラス、その依存関係にあるクラス、ランタイムライブラリクラス、そしてJDKから静的にリンクされたネイティブコードが含まれています。Java VM上では実行されませんが、メモリ管理やスレッドスケジューリングなどの必要なコンポーネントは、『Substrate VM』と呼ばれる別のランタイムシステムから提供されます。」
「結果として得られるプログラムは、JVM と比較して起動時間が短く、実行時のメモリ オーバーヘッドが低くなります。」
GraalVM チームがプロジェクトの仕組みを次のように説明しています。
クリックして拡大
「仮想化レイヤーはGraalVMによって提供されるプログラミング言語を表現します」と彼らは説明しています。「JavaScript、Ruby、R、Python、LLVMビットコードといったゲストプログラミング言語を、ホストのJVMベースアプリケーションと同じランタイムで実行することが、今や現実のものとなりました。ホスト言語とゲスト言語は直接相互運用し、同じメモリ空間でデータをやり取りすることができます。」
そして、これらすべては既存のコードを書き直すことなく実現できます。
上記のテキストで提供したリンクには、GraalVM に関する詳細情報が多数記載されています。
それでは、Oracle がこれまであまり知られていない技術を自社の主力製品の 1 つにバンドルしている理由を説明してみましょう。
GraalVMはJVMに比べて起動時間が速く、実行時のメモリオーバーヘッドが低い。
「GraalVM Enterprise がエンタイトルメントとして含まれたことにより、ほぼ瞬時の起動と低いリソース消費を要求するマイクロサービスやクラウドネイティブのデプロイメントにとって、Oracle Java はさらに魅力的なものになります」と Oracle は GraalVM エンタイトルメントに関する発表の中で述べています。
これは非常に理にかなっています。Java SEは今でも十分に便利ですが、その始まりはマイクロサービスやクラウドネイティブアプリが普及する20年前のことです。しかし、Java中心のアプリケーションは数多く存在し、その運用者はいつものように、最初からやり直すのではなく、そのコードをさらに何年も使い続ける方法を模索するでしょう。
GraalVM を無料で提供することで、ユーザーや開発者に Java SE の重要性を維持する入り口を提供し、製品に引き続きお金を払う可能性が高まる可能性があります。
GraalVMはJava自体と同じGNU GPL v2ライセンスの下で提供されます。EntepriseライセンスはOracleが提供しています。
そしてなんと、Oracleもこのコードを使用しています。同社によると、同社のクラウドインフラストラクチャでは、このコードを使用することで「ガベージコレクション時間が25%短縮され、トランザクション数/秒が10%向上した」とのことです。®