- GraalVM for JDK 23 (最新)
- GraalVM for JDK 24 (早期アクセス)
- GraalVM for JDK 21
- GraalVM for JDK 17
- アーカイブ
- 開発ビルド
よくある質問
Truffle上で動作するJavaは、Truffleインタープリタとして動作するJava言語を実装していますか? #
正確にはそうではありません。これは、Truffleインタープリタとして動作するJava仮想マシンを実装しています。つまり、お好みのJavaコンパイラ(例:`javac`)やビルドツール(Maven、Gradleなど)でJavaバイトコード(クラス、JARファイルなど)にコンパイルされた後でのみ、Javaプログラムを実行できます。GraalVMファミリーでは、これはWebAssemblyやLLVMインタープリタに似ています。どちらもCプログラムを実行できますが、最初にCコンパイラでコンパイルする必要があります。
Truffle上で動作するJavaは、HotSpot JVM上でも動作しますか? #
Truffleフレームワークで実装された他の言語と同様に、ネイティブ実行ファイルとして、またはHotSpot JVM上で動作できます。HotSpot JVM上での実行は、現在Linux x64およびmacOS x64でのみ可能です。この機能を他のプラットフォームにも拡張する予定です。
Espressoの実行にはHotSpot JVMが必要ですか? #
いいえ、必要ありません。ネイティブ実行ファイルとして正常に動作します。Espressoには、標準のJavaコアライブラリ(Java 8の場合は`rt.jar`ライブラリ、Java 11以降の場合は`lib/modules`ファイル、および関連するネイティブライブラリ:`libjava`、`libnio`など)が必要です。
GraalVM上でJavaを実行するとすでに最高レベルの最適化が得られますが、Espressoを使用するとどのような利点がありますか? #
- Espressoは、Truffleフレームワークによって提供される広範なツールを継承しています。つまり、コードカバレッジとプロファイリングのために、外部ツールに依存する必要がなくなります。
- もう1つの重要な点は、EspressoがホストJava VMとTruffle上で動作するJavaプログラムの分離を改善していることです。
- さらに、Espressoはネイティブ実行ファイルのコンテキストで実行しながら、動的にロードされたバイトコードを許可できます!
- 最後に、拡張されたホットスワップ機能の利点を享受でき、生産性を向上させることができます。
Espressoのライセンスは何ですか? #
EspressoはJava仮想マシンの実装です。オープンソースであり、GNU General Public License version two (GPLv2)に基づくフリーソフトウェアとして提供されています。
本番環境でEspressoを実行できますか? #
はい、Linux x64では可能です。他のプラットフォームのサポートはまだ実験段階です。
Espressoの実行でどのようなパフォーマンスが期待できますか? #
現在の性能は、HotSpot JVMより2〜3倍遅いです。GraalVMが提供する速度にはまだ匹敵しませんが、完全に動作するEspressoランタイムを作成したため、開発チームは現在、GraalVM JITと同等の性能にすることに注力しています。
Truffle上で動作するJavaをアプリケーションに埋め込むことはできますか? #
はい、GraalVMのPolyglot APIを使用して、ホストJava VMとは別のコンテキストでJavaバイトコードを実行できます。Java 8コンテキストをJava 11、17、または21アプリケーションに埋め込むことさえできます(オプション`--java.JavaHome=/path/to/jdk8`を使用)。
IDEからアプリを実行しようとすると、「認識されないオプション:-javaagent:…/idea_rt.jar…」と表示されるのはなぜですか? #
Espressoにエージェントをアタッチすることはできません。現時点では、VMオプションに`-XX:+IgnoreUnrecognizedVMOptions`を追加してください。