1
3

More than 1 year has passed since last update.

GraalVMでネイティブイメージを作成 on Windows

Posted at

概要

GraalVMを使うとJavaアプリケーションをネイティブイメージ化できます。(JVM不要で実行できる)
パフォーマンスなどJVMで実行するのとかなり異なる特性を持ちますが、ここでは触れません。
Windowsでビルドを試したので、その手順だけ書きます。

環境

  • Windows 11
  • Java 17
  • Gradle 7.4(Kotlin DSL)

手順

Javaアプリケーションを書く

もちろんビルド対象のアプリケーションを書く必要があります。試すだけならHello worldでいいですが、私は(機能限定版ですが)tailコマンドを作ってみました。

Visual Studioをインストールする

ネイティブイメージ化はGraalVMからC++のコンパイラを呼んで実行されるようです。なのでそのためのコンパイラが必要です。
コンパイラはいくつかあると思いますが、Visual Studioをインストールするのがいいようです。

現時点で最新版のVisual Studio 2022の無料版でいいです。

インストールするコンポーネントを選べます。私はいろいろやりたくていくつか選んだのですが、とりあえず「C++によるデスクトップ開発」だけ選べばよいかと思います。
vs_install.png

gradle-graalプラグインの導入

GraalVMを直接インストールしてもいいですが、Gradleプラグインを使うと自動的にダウンロードしてくれて比較的簡単にできます。

以下のような感じです。

build.gradle.kts
plugins {
    id("java")
    id("application")
    id("com.palantir.graal") version "0.12.0"
}

graal {
    mainClass("com.github.dhirabayashi.mytail.MyTail")
    outputName("mytail")
    graalVersion("22.1.0")
    javaVersion("17")
    windowsVsVersion("2022")
    windowsVsEdition("BuildTools")
}

全体はこれです。実行可能Jarを作るための定義もありますが、もしかしたら必須じゃないかもしれません。
https://github.com/dhirabayashi/mytail/blob/master/build.gradle.kts

ビルドの実行

あとはGradleから nativeImage タスクを実行すればOKです。
ただ、普通に実行するとGradleがC++コンパイラを見つけられなくて失敗します。Visual Studioをインストールしたときに追加される専用のコマンドプロンプトを使うと解決します。

これです。
vs_cmd.png

> set JAVA_HOME=C:\Users\****\.jdks\corretto-17.0.3
> gradlew nativeImage

これで問題なければ build/graal ディレクトリの下にバイナリが生成されます。

参考リンク

1
3
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
1
3