Oracle GraalVM Enterprise Editionスタート・ガイド
ここでは、GraalVM Enterpriseのダウンロードとインストール、基本的なアプリケーションの実行、および付随する機能のサポートの追加について説明します。さらに、GraalVM Enterpriseのポリグロット機能について学習し、JVMベースのアプリケーションのプラットフォーム固有のネイティブ実行可能ファイルをビルドする方法を確認します。
GraalVM Enterpriseを初めて使用する場合、または使用経験がほとんどない場合は、GraalVM Enterpriseの概要ページから始めることをお薦めします。ここには、GraalVM Enterpriseのアーキテクチャ、入手可能なディストリビューション、サポートされているプラットフォーム、ライセンスとサポート、コアと追加機能などに関する情報があります。
GraalVM Enterpriseがすでにインストールされ、使用経験がある場合は、このスタート・ガイドをスキップして、詳細なリファレンス・マニュアルに進むことができます。
GraalVM Enterpriseのダウンロード
Oracle GraalVM Enterprise Editionを取得するには、次の方法があります:
- Oracle GraalVMダウンロードからダウンロードし、アプリケーションの開発、テスト、プロトタイプ作成およびデモに対するGraalVM Enterprise EditionのOracle Technology Networkライセンス契約に同意します。
- Oracle Java SE SubscriptionおよびOracle Java SE Desktop Subscriptionをサブスクライブします。サブスクリプションには、GraalVM Enterpriseの使用権限が含まれています。
- Oracle Cloudをサブスクライブします。Oracle Cloudサブスクライバは、サポートを含め、GraalVM Enterpriseを自由に使用できます。
GraalVM Enterpriseのインストール
オペレーティング・システムを選択し、特定のプラットフォームのインストール・ステップに進みます:
アプリケーションの実行
GraalVMのコア・ディストリビューションには、JVMおよびGraalVMコンパイラが含まれます。GraalVMをインストールすると、すでにどのJavaアプリケーションでも変更せずに実行できます。
その他の言語サポートは、gu (GraalVMアップデータ・ツール)を使用して追加言語のランタイムおよびユーティリティをインストールすることで、リクエストに応じてインストールできます。
様々な言語のランタイム
Java
java
ランチャは、GraalVMデフォルト・コンパイラ(Graal)を使用してJVMを実行します。インストール時にJavaバージョンを確認します:
$JAVA_HOME/bin/java -version
この典型的なHelloWorld
クラスを次に示します:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
次のコマンドを実行してこのクラスをバイトコードにコンパイルし、実行します:
javac HelloWorld.java
java HelloWorld
Hello World!
GitHub上のGraalVMデモには、より大規模なJavaの例が数多くあります。GraalVMコンパイラの詳細は、Graalコンパイラを参照してください。Javaの実行の詳細は、JVM言語を参照してください。
JavaScriptおよびNode.js
GraalVMでは、JavaScriptアプリケーションの実行がサポートされています。JavaScriptランタイムはオプションで使用可能であり、次のコマンドを使用してインストールできます:
gu install js
js
ランチャが$JAVA_HOME/bin
にインストールされます。JavaScriptランタイムがインストールされている場合、REPLモードと、スクリプト・ファイルを直接実行する方法の両方で、プレーンJavaScriptコードを実行できます:
$JAVA_HOME/bin/js
> 1 + 2
3
GraalVMでは、Node.jsアプリケーションの実行もサポートされます。Node.jsサポートはデフォルトではインストールされませんが、次のコマンドを使用して簡単に追加できます:
gu install nodejs
node
ランチャとnpm
ランチャの両方が$JAVA_HOME/bin
ディレクトリで使用可能になります。
$JAVA_HOME/bin/node -v
$JAVA_HOME/bin/npm show <package name> version
100,000を超えるnpmパッケージが定期的にテストされ、express、react、async、request、browserify、grunt、mocha、underscoreなどのモジュールを含むGraalVM Enterpriseと互換性があります。Node.jsモジュールをインストールするには、<graalvm>/bin
フォルダにあるnpm
実行可能ファイルを使用します。これは、node
とともにインストールされます。npm
コマンドは、デフォルトのNode.jsコマンドと同等で、すべてのNode.js APIをサポートします。
npm install
を使用して、モジュールcolors
、ansispan
、およびexpress
をインストールします。インストールしたモジュールは、アプリケーションから使用できます。
$JAVA_HOME/bin/npm install colors ansispan express
次のコード・スニペットを使用して、Node.jsモジュールをインストールしたディレクトリにapp.js
ファイルとして保存します:
const http = require("http");
const span = require("ansispan");
require("colors");
http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.end(span("Hello Graal.js!".green));
}).listen(8000, function() { console.log("Graal.js server running at http://127.0.0.1:8000/".red); });
setTimeout(function() { console.log("DONE!"); process.exit(); }, 2000);
node
コマンドを使用して、GraalVM Enterpriseでapp.jsを実行します:
$JAVA_HOME/bin/node app.js
Node.jsとの互換性に関する詳細なドキュメントおよび情報は、JavaScriptおよびNode.jsを参照してください。
LLVM言語
GraalVM LLVMランタイムは、C/C++、Rust、およびLLVMビットコードにコンパイル可能なその他のプログラミング言語を実行できます。
LLVMランタイムはオプションで使用可能であり、次のコマンドを使用してインストールできます:
$JAVA_HOME/bin/gu install llvm
lli
のGraalVM実装が$JAVA_HOME/bin
ディレクトリにインストールされます。インストール時にバージョンを確認します:
$JAVA_HOME/bin/lli --version
LLVMランタイムをインストールすると、LLVMビットコード形式のプログラムをGraalVMで実行できます。ネイティブ・プログラムをLLVMビットコードにコンパイルするには、一部のLLVMフロントエンド(clang
など)を使用します。
LLVMランタイムの他に、GraalVMには、次のように設定できるLLVMフロントエンド(ツールチェーン)も用意されています:
gu install llvm-toolchain
export LLVM_TOOLCHAIN=$(lli --print-toolchain-path)
その後、C/C++コードは、GraalVMに付属のclang
を使用してLLVMビットコードにコンパイルできます。たとえば、次のCコードをhello.c
という名前のファイルに入れます:
#include <stdio.h>
int main() {
printf("Hello from GraalVM!\n");
return 0;
}
LLVMビットコードが埋め込まれた実行可能ファイルhello
にhello.c
をコンパイルし、実行します:
$LLVM_TOOLCHAIN/clang hello.c -o hello
lli hello
詳細なドキュメントおよびGraalVM EnterpriseでのLLVMビットコードの実行例は、LLVM言語を参照してください。
ネイティブ・イメージ
GraalVM Enterpriseを使用すると、Javaバイトコードをプラットフォーム固有の自己完結型のネイティブ実行可能ファイルにコンパイルして、アプリケーションの起動を高速化し、フットプリントを縮小できます。
ネイティブ・イメージ機能はデフォルトでは使用できませんが、GraalVMアップデータ・ツールを使用して簡単にインストールできます:
gu install native-image
前述のHelloWorld
の例を使用して、ネイティブ実行可能ファイルの生成方法を示します:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
ノート: コンパイルについては、
native-image
はローカル・ツールチェーンに依存します。システムが前提条件を満たしていることを確認します。
HelloWorld.javaをバイトコードにコンパイルし、ネイティブ実行可能ファイルをビルドします:
javac HelloWorld.java
native-image HelloWorld
最後のコマンドは、現在の作業ディレクトリにhelloworld
という名前の実行可能ファイルを生成します。これを呼び出すと、ネイティブにコンパイルされたHelloWorld
クラスのコードが次のように実行されます:
./helloworld
Hello, World!
この革新的なテクノロジの詳細は、ネイティブ・イメージのリファレンス・マニュアルを参照してください。
言語の結合
GraalVM Enterpriseでは、あるプログラミング言語を別のプログラミング言語からコールし、それらの間でデータを交換できます。相互運用性を有効にするために、GraalVM Enterpriseには--polyglot
フラグが用意されています。
たとえば、js --jvm --polyglot example.js
を実行すると、example.js
がポリグロット・コンテキストで実行されます。プログラムがサポートされている他の言語のコードをコールすると、GraalVM Enterpriseはexample.js
アプリケーションと同じランタイムでそのコードを実行します。多言語アプリケーションの実行の詳細は、「ポリグロット・プログラミング」を参照してください。
次に読むもの
新規ユーザー
このガイドは、主にGraalVM Enterpriseを初めて使用するユーザー、またはGraalVM Enterpriseに関する知識はあるが使用経験がほとんどないユーザーを対象としているため、より複雑なサンプル・アプリケーションを調べることを検討してください。
Oracle Cloudユーザー
クラウド・ワークロードにGraalVM Enterpriseを検討しているOracle Cloudユーザーは、OCIでのGraalVM Enterpriseを参照することをお薦めします。このページでは、Oracle Cloud Infrastructure仮想マシン・コンピュート・インスタンスでのGraalVM Enterpriseの使用に焦点を当てています。
上級ユーザー
特定の言語のGraalVM Enterpriseサポートに主に関心がある場合、またはGraalVM Enterpriseの様々な機能のより詳細な情報が必要な場合は、リファレンス・マニュアルを参照してください。
GraalVM Enterpriseが提供するツールのサポートを探している場合は、デバッグおよびモニタリング・ツールに進んでください。
GraalVM Enterpriseを将来の言語またはツール実装のプラットフォームとして検討している場合は、「プラットフォームとしてのGraalVM Enterprise」に移動してください。
GraalVM Enterpriseのセキュリティ・モデルの詳細は「セキュリティ・ガイド」、リッチAPIドキュメントは「GraalVM SDK Javadoc」を参照してください。