BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GraalVMによるネイティブイメージをサポートするJHipster Native Bluepring

GraalVMによるネイティブイメージをサポートするJHipster Native Bluepring

原文(投稿日:2022/03/25)へのリンク

Spring Boot Native blueprint for JHipsterは、Spring Nativeを使ったJHipsterプロジェクトを新規に作成する、コードおよびコンフィギュレーションの生成ツールである。Spring Nativeは、GeaalVM Native Imageコンパイラを使ってSpringアプリケーションをネイティブな実行形式にコンパイルする、試験的なSpringプロジェクトである。

GraalVM Native Imageは、AOT(Ahead-of Time)コンパイルを使用して、Javaバイトコードをスタンドアロンで実行可能なネイティブイメージに変換する。生成されるネイティブイメージには、アプリケーションのクラスや依存関係のクラスに加えて、Substrate VMの必要部分が含まれている。ネイティブイメージは、VMで動作する従来のアプリケーションよりも起動が早く、コンパクトで、メモリ使用量が少ない。欠点はビルドに時間を要することと、すべての構成がビルド時に決定するため、実行時の最適化の余地が少ないことだ。

GraalVMは、Community版とEnterprise版として、さまざまなビルドのバイナリが提供されている。GraalVM Commumnityをインストールすると、GraalVM Updateツール(gu)によるNative Imageサポートが使用可能になる。

gu install native-image

このステップにより、$JAVA_HOME/binディレクトリでNative Image実行ファイルが使用できるようになる。先程の"gu install native-image"コマンドを実行すると、GraalVM Community版のユーザには、GitHubカタログからのNative Imageサポートもインストールされる。GraalVM Enterprise版のユーザは、手作業でのインストールが必要だ。

Native Imageサポートをテストするには、通常のJavaクラスを作成し、javacでコンパイルした上で、コンパイルされたバイトコードからNative Imageを生成する。

javac HelloWorld.java
native-image HelloWorld

作成されたNative Imageにはアプリケーション、すべてのライブラリ、JVMの必要部分が含まれており、スタンドアロンでの実行が可能だ。

./helloworld

Spring Boot Native blueprint for JHipsterは、プロジェクトの固有機能を追加する前のスタートポイントとして使用可能な、コードとコンフィギュレーションを生成する。生成されたプロジェクトにはSpring Nativeのサポートが含まれており、GraalVMネイティブイメージコンパイラを使ってSpringアプリケーションの実行形式を作成することができる。

JHipsterにはNode.jsの最新バージョンが必要だ。その上で、JHipsterとJHipster Native blueprintをインストールする。

npm install -g generator-jhipster
npm install -g generator-jhipster-native

インストールされているNode.jsのバージョンがJHipster Nativeの要件を満たさない場合には、メッセージが表示される。次に、プロジェクト用のディレクトリを作る。ただし、パスに空白が含まれていないことが必要だ。このプロジェクトディレクトリの中にJHipster Nativeのプロジェクトが生成される。

jhipster-native

プロジェクトを設定し、生成されたコードに必要な機能を追加したならば、Mavenを使用してネイティブ実行形式を生成することができる。

./mvnw package -Pnative,prod -DskipTests

実行形式の生成には、通常のビルドよりも多少時間を要する。これは、実行時ではなく、事前(ahead-of-time)に最適化が実施されるためだ。ビルドが問題なく完了すれば、。アプリケーションの実行が可能になる。

./target/native-executable

2019年にSpringチームによって立ち上げられて、2021年3月に最初のベータ版が提供されたSpring Nativeは、Springfアプリケーションのネイティブイメージをサポートする試験的プロジェクトである。Spring Nativeのアイデアと実装は、SpringOne 2021で発表されたとおり、Spring 6.0として採用される。Spring Framework 6.0のロードマップには、2022年10月のGAリリース予定が記載されている。

OktaのデベロッパアドボケートであるMatt Raible氏によるブログ記事には、IDプロバイダの設定手順を含むGraalVM上でのJHipsterの実行方法が詳しく説明されている。

作者について

この記事に星をつける

おすすめ度
スタイル

BT