LoginSignup
0
0

More than 1 year has passed since last update.

VSCodeでGraalVMを動かす(Java/NodeJS編)

Posted at

初めに

  • VSCodeのGraalVM拡張を用いて以下のプログラムを動作させた話
    • Java (単純なHelloWorldと、JavaからJSのコードを呼び出す2パターン)
    • node.js (シンプルなWebアプリケーションを起動)
  • 実行環境は以下の通り
    • Windows 10
    • GraalVM CE 22.3.1
    • VSCode 1.76.2
  • 誤り等あれば、ご指摘いただけますと幸いです

環境構築

1. GraalVMをインストールする

  • Installation on Windows PlatformsからGraalVMをインストールする

    • 以降、C:\Program Files\graalvm に展開したものとして説明する
  • インストール後、環境変数PATHとJAVA_HOMEを以下の通り設定する

    環境変数
    PATH C:\Program Files\graalvm\bin を追加
    JAVA_HOME C:\Program Files\graalvm

2. GraalVM Tools for Java Extension をインストール

  • VSCodeのExtensionsからGraalVM Tools for Java Extensionを選択し、インストールする
  • インストール後、VSCodeのActive bar に Gr が表示される。クリックすると、自分の環境のGraalVMのコンポーネントが確認できる

3. デフォルトのJavaの設定

  • VSCode の View -> Command Palette からGraalVM: Set Active GraalVM Installationと入力し、インストールしたGraalVMを選択する
  • 設定画面から、以下の2つを選択
    • Set as JAVA for Terminal options (JAVA_HOME in termainal.integrated.env.osx)
    • Set as JAVA for Terminal options (PATH in termainal.integrated.env.osx)

4. 環境確認 (Java)

  • VSCodeのTERMINALにjava --versionと入力。GraalVMのJVMが表示される事を確認
    openjdk 17.0.6 2023-01-17
    OpenJDK Runtime Environment GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13)
    OpenJDK 64-Bit Server VM GraalVM CE 22.3.1 (build 17.0.6+10-jvmci-22.3-b13, mixed mode, sharing
    

5. 環境確認 (node.js)

  • VSCodeのTERMINALにnode --version:graalvm と入力。GraalVMの情報が表示されることを確認
    GraalVM CE Native Polyglot Engine Version 22.3.1
    Java Version 17.0.6
    Java VM Version GraalVM 22.3.1 Java 17 CE
    GraalVM Home C:\Program Files\graalvm
      Installed Languages:
        JavaScript version 22.3.1
    

6. ワークスペースの作成

  • C:\dev\GraalVMSampleフォルダを作成し、VSCodeのワークスペースとして開いておく

Javaを動かす1 (Hello world)

1. サンプルファイル作成

  • VMSampleフォルダ直下にSample.javaを作成する
    Sample.java
    public class Sample {
    	public static void main(String[] args) {
    		System.out.println("Hello world");
            System.out.println("java.vm.vendor = " + System.getProperty("java.vm.vendor"));
    	}
    }
    

2. 起動ファイルの設定

  • VSCodeのデバッグビューからcreate a launch.json fileをクリックする。
    image5.png

  • launch.jsonがVMSampleフォルダに作成される

    launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
              "type": "java",
              "name": "Launch Java",
              "request": "launch",
              "mainClass": "${file}"
            }
          ]
    }
    

3. 実行

  • デバッグビューからRun and Debug -> Launch Java を実行する。
  • TERMINALに以下のように表示されればOK
    Hello world
    java.vm.vendor = GraalVM Community
    

Javaを動かす2 (JavaからJSを実行する)

1. サンプルファイルの修正

  • VMSampleフォルダのSample.javaを以下のように修正する。
  • org.graalvm.polyglot.Context#createで、多言語の実行コンテキストを作成する。
    Sample.java
    + import org.graalvm.polyglot.*;
    public class Sample {
    	public static void main(String[] args) {
    +        Context polyglot = Context.create();
    +       Value array = polyglot.eval("js", "[1,2,42,4]");
    +       int result = array.getArrayElement(2).asInt();
    		System.out.println("Hello java on GraalVM");
    		System.out.println("java.vm.vendor = " + System.getProperty("java.vm.vendor"));
    +       System.out.println("Array:" + array + "'s 2nd element is " + result);
        }
    }
    

2. 実行

  • デバッグビューからRun and Debug -> Launch Java を実行する。Javascriptの配列処理が行われている
    Hello java on GraalVM
    java.vm.vendor = GraalVM Community
    Array:(4)[1, 2, 42, 4]'s 2nd element is 42
    

node.jsを動かす

1. サンプルファイル作成

  • VMSampleフォルダ直下にApp.jsを作成する
    App.js
    http
      .createServer(function (request, response) {
        response.writeHead(200, { "Content-Type": "text/html" });
        response.end("Hello Graal.js!");
      })
      .listen(8000, function () {
        console.log("Graal.js server running at http://127.0.0.1:8000/");
      });
    

2. 起動ファイルの設定

  • launch.jsonにNodeJSの起動設定を追加する
    launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
              "type": "java",
              "name": "Launch Java",
              "request": "launch",
              "mainClass": "${file}"
           },
           {
              "type": "graalvm",
              "request": "launch",
              "name": "Launch Node App",
              "outputCapture": "std",
              "protocol": "chromeDevTools",
              "program": "${workspaceFolder}/App.js"
            }
          ]
    }
    

3. 実行

  • デバッグビューからRun and Debug -> Launch Node App を実行する。
  • 実行後、TERMINALに以下のように表示され、http://127.0.0.1:8000/にアクセスできればOK
    Hello js on Graalvm
    Graal.js server running at http://127.0.0.1:8000/
    

引用

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0