GraalVM
サンプルプロジェクト: graalvm
Ktorサーバーアプリケーションは、異なるプラットフォーム向けのネイティブイメージを作成するためにGraalVMを利用でき、もちろん、GraalVMが提供する高速な起動時間やその他の利点を活用できます。
現在、GraalVMを活用したいKtorサーバーアプリケーションは、アプリケーションエンジンとしてCIOを使用する必要があります。
GraalVMの準備
GraalVMをインストールし、システムパスにそのインストールディレクトリを含めることに加えて、すべての依存関係がバンドルされるようにアプリケーションを準備する必要があります。つまり、fat JARを作成する必要があります。
リフレクションの設定
GraalVMは、リフレクションを使用するアプリケーション(Ktorの場合もこれに該当します)に関していくつかの要件を持っています。特定の型情報を含むJSONファイルを提供する必要があり、この設定ファイルはnative-image
ツールに引数として渡されます。
native-image
ツールの実行
fat JARの準備ができたら、必要な唯一のステップはnative-image
CLIツールを使用してネイティブイメージを作成することです。これはGradleプラグインによっても実行できます。build.gradle.kts
ファイルの例はこちらで確認できます。ただし、使用されている依存関係やプロジェクトのパッケージ名などによって、いくつかのオプションが異なる場合があることにご注意ください。
結果のバイナリを実行する
シェルスクリプトがエラーなしで実行された場合、ネイティブアプリケーションが生成されます。サンプルの場合はgraal-server
という名前です。これを実行するとKtorサーバーが起動し、https://0.0.0.0:8080
で応答します。