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 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 Enterpriseでは、REPLモードと、およびスクリプト・ファイルを直接実行する方法の両方で、プレーンJavaScriptコードを実行できます:
js
> 1 + 2
3
GraalVM Enterpriseでは、Node.jsアプリケーションの実行もサポートされます。Node.jsサポートはデフォルトではインストールされませんが、GraalVMアップデータを使用して簡単に追加できます。
gu install nodejs
node -v
v14.17.6
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
モジュールをインストールします。インストールしたモジュールは、アプリケーションから使用できます。
npm install colors ansispan
次のコード・スニペットを使用して、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を実行します:
node app.js
Node.jsとの互換性に関する詳細なドキュメントおよび情報は、JavaScriptおよびNode.jsを参照してください。
LLVM言語
GraalVM Enterprise LLVMランタイムは、C/C++、Rust、およびLLVMビットコードにコンパイル可能なその他のプログラミング言語を実行できます。ネイティブ・プログラムは、clang
などのLLVMフロントエンドを使用してLLVMビットコードにコンパイルする必要があります。C/C++コードは、事前ビルドされたLLVMツールチェーンを介して、GraalVM Enterpriseに付属のclang
を使用してLLVMビットコードにコンパイルできます。
LLVMツールチェーン・サポートを設定するには:
- プラグインをインストールします:
gu install llvm-toolchain
- 利便性のために、
LLVM_TOOLCHAIN
変数をツールチェーンの場所にエクスポートします:export LLVM_TOOLCHAIN=$(lli --print-toolchain-path)
たとえば、次の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」を参照してください。