QUARKUS で作る爆速 Java Micro Service #2

Kenta Kosugi
4 min readSep 25, 2019

--

準備

GraalVM のダウンロードとインストール

QUARKUS を利用するには GraalVM が必要になります。ここからダウンロードして適当な場所にインストールします。Mac の場合は graalvm-ce-darwin-amd64–XX.X.X.tar.gz という名称のものを落とします。

/Library/Java/JavaVirtualMachines/graalvm-ce-19.1.1/

GRAAL_VM 環境変数と PATH の設定

環境変数を設定します。19.1.1 をインストールした場合は下記のとおりです。

$ export GRAAL_VM=/Library/Java/JavaVirtualMachines/graalvm-ce-19.1.1/Contents/Home
$ export PATH=$GRAAL_VM/bin:$PATH

ネイティブビルド

Java は通常、Java Vritual Machine が理解できるバイトコードに Java ソースコードをコンパイルして利用します。#1 ではその形態を利用していました。しかし Java では一度起動したらずーっと起動し続けるようなシステムには向いていましたが、オートスケールアップ、オートスケールダウンを前提とするような、例えばコンテナオーケストレーションシステムには向いていませんでした。

しかし、QUARKUS ではコンテナ上で動作する Java を目的にしており、これまで課題だった Java の起動時のメモリや起動時間を解決することができるしかけを用意しています。結論を言うと、Linux (x86_64)用のバイナリコードを生成することができます。docker は Linux を前提として作られたシステムです。

Mac 形式ファイルのビルド

以下のコマンドを打ってみます。

$ mvnw clean package -Pnative

-Pnative オプションでプロファイルを使用して Maven を起動します。オプションを付与しない場合は Maven を稼働させたプラットフォーム(今回は Mac)用のバイナリを生成します。

target ディレクトリに以下のファイルが作成されていることを確認します。

./target/quarkus-samples-1.0-SNAPSHOT-runner

これが Mac で直接実行できる executable ファイルになります。file コマンドでファイルについてみてみます。Mach-0 64-bit executable x86_64 になっているのが確認できます。

Mac で実行可能なファイル

Mac 形式ファイルの実行

実際に実行してみましょう。Java と比べて非常に高速に起動することが確認できるかと思います。

$ ./target/quarkus-samples-1.0-SNAPSHOT-runner
バイナリの実行

以下の警告が出力された場合は、「許可」を選択してください。

警告

メモリも Java と比較するとそれほど消費していません。

REST サービスの確認

http://localhost:8080/hello にアクセスして、ちゃんと動作するか確認してみます。

REST サービスの起動確認

動作しているのが確認できました。

次回は Docker コンテナ用に Linux executable ファイルとしてビルドしたいと思います。

--

--

Kenta Kosugi
Kenta Kosugi

Written by Kenta Kosugi

Javaアプリケーションサーバーの開発からCORBA製品のサポート、QA、証券外務員(第一種免許)、ストレージ屋、アーキテクト、SaaS屋と一貫性のない道を歩んでいます。Red Hatに復帰しました。

No responses yet