ノート:

OCIのOracle LinuxでGraalVM Enterpriseの使用を開始する

イントロダクション

このハンズオン・ラボでは、GraalVM Enterpriseとその機能をOracle Cloud InfrastructureのOracle Linuxにインストールする方法を説明します。

GraalVM EnterpriseはOracle Java SE Subscriptionに含まれ、Oracle Cloud Infrastructure(OCI)に無料で利用可能

GraalVM Enterpriseは、信頼性が高く安全なOracle Java SE上に構築された、高パフォーマンスのJDKディストリビューションで、少ないリソースでアプリケーションのパフォーマンスを高速化するよう設計されています。リソース要件の低いアプリケーションをより高速にすると、サーバー数が少なくなるか小さくなるため、クラウド・コストが削減されます。

GraalVM Enterpriseは、Javaアプリケーションを実行するための2つの方法を提供します。Graal Just-in-Time (JIT)コンパイラを使用するHotSpot JVM、またはネイティブ・エクセクト可能(AOT)がコンパイルされた先進(AOT)です。

ラボ・コンテンツ

この演習では、次のことを行います。

ワークショップの予想時間: 20分

注:コマンドをコピーするには、フィールドの上にカーソルを置き、[クリップボードにコピー]アイコンをクリックします。

タスク1: Oracle CloudのVMインスタンスへの接続

このラボを起動すると、必要なリソースがバックグラウンドでプロビジョニングされます: Virtual Cloud Network (VCN)とCompute Instance with the Oracle Linux 8事前構築イメージ。プロビジョニングの完了には1~2分かかる場合があります。「Luna Lab」Webページの「Resources」タブを参照すると、リソースが完全にプロビジョニングされ、準備ができたときにわかります(次の手順1を参照)。

  1. デスクトップの「Luna Lab」アイコンをダブルクリックしてブラウザを開きます。

    「リソース」以外のアニメーション・ギアがチェック・マークになるまで待ちます。これは、必要なすべてのコンピュートおよびネットワーク・リソースがプロビジョニングされ、続行できることを意味します。

  2. 「リソース」を展開し、SERVER_IPボックスからパブリックIPアドレスをコピーします。多くのユーザーがView Detailsをクリックする必要があります。ボックス上にカーソルを置いたときに表示される右端の「クリップボードにコピー」ボタンを使用できます。

  3. Lunaデスクトップが表示されるように、ブラウザ・ウィンドウを最小化します。「アプリケーション」メニューをクリックし、ターミナル・エミュレータを開きます。

  4. SSH接続コマンドを入力します。<SERVER_IP>はVMインスタンスのパブリックIPアドレスです:

    ssh opc@<SERVER_IP>
    

    プロンプトで yesと入力して、ECDSA鍵のフィンガープリントを受け入れます。

これで、Oracle Cloudのリモート・ホストに接続され、次のタスクに進むことができます。

タスク2: GraalVM Enterprise Oracle Linuxのインストール

このタスクでは、Oracle LinuxにGraalVM Enterpriseをインストールし、デフォルトのJavaランタイムとして設定します。

簡単にインストールするために、GraalVM Enterprise RPMはOracle Linux YUMリポジトリで使用できます。つまり、OCIユーザーは、Linuxオペレーティング・システムのパッケージ管理ユーティリティであるyumを使用してGraalVM Enterpriseをクラウド・インスタンスにインストールできます。

  1. (オプション) VMインスタンスに接続された端末ウィンドウで、使用可能なGraalVM Enterpriseパッケージを検索し、特定のリリースおよびJava 11に検索を絞り込みます。

    sudo yum provides graalvm21-ee-11-jdk
    

    結果のリストには、現在および以前のバージョンのOracle GraalVM Enterprise Edition JDK11 Java Development Kitバージョン21.xが含まれています。

  2. graalvm21-ee-11-jdkをインストールします。

    sudo yum install graalvm21-ee-11-jdk
    

    プロンプトでyesと入力して、インストール済パッケージ・サイズに問題がないかどうかを確認します。JVMランタイム、Graalコンパイラ、すべての依存パッケージ(libpolyglotllvmなど)を含む最新バージョンのgraalvm21-ee-11-jdkをインストールします。

  3. このSSHセッションのGraalVM Enterpriseインストールを指すように環境変数を構成します。インストール後、パッケージ・ファイルは/usr/lib64/graalvmディレクトリに配置され、それに応じてbin内のバイナリが配置されます。

    • bash構成でPATHおよびJAVA_HOME環境変数を設定して、次のコマンドでGraalVM Enterpriseを指すように設定します。

      echo "export JAVA_HOME=/usr/lib64/graalvm/graalvm21-ee-11" >> ~/.bashrc
      
      echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
      
    • この変更をアクティブ化します。

      source ~/.bashrc
      
  4. Javaのバージョンを確認して、インストールが成功し、JDKがGraalVM Enterpriseに設定されているかどうかを確認します。

    java -version
    

この時点で、GraalVM Enterprise上でJavaワークロードをすでに実行でき、コードの変更は必要ありません。GraalVM Enterpriseは、Graal最適化コンパイラを上位層のJITコンパイラとして採用しています。このコンパイラでは、高度な最適化を実行し、積極的なインライン化手法を適用して、アプリケーションのパフォーマンスを向上させます。

このラボの完了時に、GraalVM Enterpriseを使用するOracle Cloudのアプリケーションの高速化のラボをお薦めします。このラボでは、Java Microbenchmark Harness (JMH)の実行中にGraal JITコンパイラとC2のパフォーマンスの比較に重点を置いています。

次のタスクに進むことができます。

タスク3: GraalVM Enterpriseの追加機能(ネイティブ・イメージ)

GraalVM Enterpriseは、コア・コンポーネントとともに出荷され(ファイル・サイズを節約するため)、さらに多くの機能をオンデマンドで拡張することができます。たとえば、ネイティブ・イメージ、Node.jsランタイム、LLVMツールチェーンなどをインストールできます。製品ドキュメントで使用可能な機能の詳細を確認してください。

GraalVM Enterpriseに機能を追加するには、yum install <package_name>コマンドで十分です。このタスクでは、GraalVM Enterpriseのネイティブ・イメージをインストールします。これは、Javaコードをスタンドアロンのネイティブ実行可能ファイルに事前にコンパイルするためのテクノロジです。

  1. (オプション)現在のGraalVM Enterpriseインストールで使用可能な追加機能を確認します。

    sudo yum provides graalvm21*
    

    印刷リストは非常に多い。ネイティブ・イメージ・コンポーネントに関心があるため、正確なパッケージ名を指定して検索を絞り込みます。

    sudo yum provides graalvm21-ee-11-native-image*
    
  2. 次のコマンドを1つずつ実行して、ネイティブ・イメージをインストールします(Oracle Linux 8固有):

    sudo yum update -y oraclelinux-release-el8
    

    ローカルのリポジトリ・メタデータ・キャッシュを更新して、新しい使用可能なパッケージを取得します。

    sudo yum config-manager --set-enabled ol8_codeready_builder
    

    ネイティブ・イメージ依存関係の一部を含むol8_codeready_builderリポジトリを有効にします。

    sudo yum install graalvm21-ee-11-native-image
    

    プロンプトでyesと入力して、インストール済パッケージ・サイズに問題がないかどうかを確認します。必要な依存ライブラリ(glibczlibなど)をすべてインストールし、native-imageユーティリティをGraalVM Enterpriseのインストール・ディレクトリ($JAVA_HOME/bin)に配置します。

    Oracle Linux 7では、sudo yum install graalvm21-ee-11-native-imageを実行してネイティブ・イメージをインストールするのに十分です。

  3. バージョンをチェックして、インストールが成功したかどうかを確認します。

    native-image --version
    

これで、native-imageユーティリティを使用して、JavaアプリケーションをネイティブのLinux実行可能ファイルに変換できます。Javaアプリケーションをネイティブ実行可能ファイルとして実行すると、即時起動、CPUおよびメモリーの消費が低下するため、クラウド・デプロイメントに適した候補となります。

このラボの完了時に、GraalVM Native Imageのクイック・スタートラボを入手して、GraalVM Native Imageのハンズオン・ラボ体験を取得し、クラウド・ネイティブJavaアプリケーションの構築を開始することをお薦めします。

次のタスクに進むことができます。

タスク4:既存のGraalVM Enterpriseインストールの更新

Oracle Linuxのyumパッケージ・マネージャを使用すると、既存のGraalVM Enterpriseインストールを更新したり、別のバージョンで置き換えることができます。このタスクでは、GraalVM Enterpriseをバージョン21.xから22.xに更新し、Java 11の配布をGraalVM Enterprise for Java 17に置き換えます。

  1. GraalVM Enterpriseをバージョン21.xから22.xに更新し、Java 11ではなくJava 17用のディストリビューションをインストールします。

    sudo yum install graalvm22-ee-17-jdk
    

    プロンプトでyesと入力して、インストール済パッケージ・サイズに問題がないかどうかを確認します。

  2. Javaバージョンをチェックして、更新が成功したかどうかを確認します。

    java -version
    

    graalvm22-ee-17-jdkパッケージは、/usr/lib64/graalvmディレクトリにgraalvm21-ee-11-jdkとともにインストールされ、システム全体が更新されました。

    ノート:コンソールに出力されるバージョンに関係なく、PATHおよびJAVA_HOME環境変数は古いバージョンを指しています。タスク2のステップ3の説明に従って、変数をリセットします。

yum upgradeコマンドのノート

yum upgradeコマンドは、同じ年のパッケージ・ラインで更新するために使用できます。たとえば、このRPMパッケージが使用可能になったときにGraalVM Enterprise 22.0.0からバージョン22.0.1にアップグレードする場合などです。

sudo yum upgrade graalvm22-ee-17-jdk

システム全体を更新し、廃止されたGraalVM Enterpriseインストールを削除します。

完了しました。この演習を正常に完了している。

さらに学ぶ

このセッションを終了するには、ツールバーの「End Session」ボタンをクリックします。

その他の学習リソース

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。

製品ドキュメントは、Oracleヘルプ・センターを参照してください。