0Pricing
Java Academy · レッスン

GraalVM とは

高性能なポリグロット VM です。

「GraalVM とは」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

GraalVMとは

GraalVMは、Graalという最新のJITコンパイラを基盤とする高性能なJDKディストリビューションです。多くのワークロードで通常のJavaをより高速に実行でき、さらにポリグロット実行と事前ネイティブコンパイルという2つの大きな機能を備えています。

そのまま使えるJDK

GraalVMは完全なJDKです。既存のjavac、java、バイトコードはすべて変更せずに動作します。違いは内部のコンパイラと、native-imageのような追加ツールが含まれている点です。

public class Main {
    public static void main(String[] args) {
        System.out.println("Runs the same on GraalVM as on any JDK");
        System.out.println("Java: " + System.getProperty("java.version"));
    }
}

Graalコンパイラ

Graal JIT自体はJavaで書かれています。高度なインライン化、部分エスケープ解析、投機的最適化などの積極的な最適化を行い、抽象化が多く大量にメモリを割り当てるコードでは、従来のC2コンパイラを上回ることもよくあります。

Truffleによるポリグロット実行

GraalVMにはTruffleフレームワークが含まれており、複数の言語を同じVM上で実行し、相互に呼び出すこともできます。JavaScript、Python、Ruby、R、WebAssembly向けの実装があります。言語の境界を越えた値の受け渡しも、低いオーバーヘッドで行えます。

ポリグロットの例(概念)

ポリグロットAPIでは、Contextを作成して別の言語のコードを評価し、その結果をJavaに読み戻します。クラスはorg.graalvm.polyglotにあります。

// Requires GraalVM polyglot runtime
import org.graalvm.polyglot.*;

public class Main {
    public static void main(String[] args) {
        try (Context ctx = Context.create()) {
            Value sum = ctx.eval("js", "40 + 2");
            System.out.println(sum.asInt());
        }
    }
}

ネイティブイメージ

native-imageツールは、Javaを事前にコンパイルして、単独で動作するネイティブ実行ファイルを生成します。実行時にJVMは不要で、クラスのロードやJITのウォームアップもないため、プログラムは数ミリ秒で起動します。

エディション

GraalVMには、無償のCommunity Editionと、追加の最適化機能を備えたOracle GraalVMディストリビューションがあります。どちらにもnative-imageが含まれており、学習用途や多くの本番用途ではコミュニティ版で十分です。

クラウドで重要な理由

高速な起動と少ないメモリ使用量により、ネイティブイメージはサーバーレス関数、CLI、ゼロまでスケールするコンテナに適しています。ネイティブJavaサービスは同等のGoバイナリと同じくらい速く起動でき、長年のJVMの弱点を解消します。

JITとAOTの比較

2つの実行モデルが共存しています。

  • JIT(Graalコンパイラ)は、実行時に実際のプロファイル情報を使って最適化します。長時間稼働するサーバーでのピークスループットに適しています。
  • AOT(native-image)は、実行前にコンパイルします。起動時間とメモリ使用量に適しています。

フレームワークのサポート

Spring Boot、Quarkus、Micronautなどの最新フレームワークは、native-imageを正式にサポートしています。ビルド時に設定を事前計算するため、アプリケーションをネイティブバイナリへスムーズにコンパイルできます。

GraalVMを選ぶ理由

抽象化の多いコードでより高いJITスループットが必要な場合、ポリグロット連携が必要な場合、または高速起動・低メモリのデプロイ用にネイティブ実行ファイルが必要な場合は、GraalVMを採用してください。標準JDKを包含する拡張版なので、導入リスクは低いです。

クイックチェック

GraalVMについての理解度を確認してください。

振り返り

GraalVMについて学びました。

  • 高性能なGraal JITコンパイラを基盤とする完全なJDKです。
  • Truffleによってポリグロット実行と言語間の呼び出しが可能になります。
  • native-imageはJavaを事前にコンパイルしてネイティブ実行ファイルを生成します。
  • JITは長時間稼働時のスループットを重視し、AOTは起動時間とメモリ使用量を重視します。
  • Spring Boot、Quarkus、Micronautなどのフレームワークはネイティブビルドをサポートしています。

よくある質問

「GraalVM とは」レッスンは無料ですか?

はい。「GraalVM とは」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「GraalVM とは」で何を学びますか?

高性能なポリグロット VM です。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「GraalVM とは」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. GraalVM とは
  2. ネイティブイメージのビルド
  3. リフレクションと設定
  4. ネイティブイメージのトレードオフ
← Java Academyに戻る