泉ネイティブベータ0.10



概説
この記事はSpring Native 0.10.6 BETAドキュメントに基づいています.
バージョン2411はですが、バージョン0.11がリリースされました.11新しいAheadofTime(AOT)エンジンで多くの改善のため.この記事でVersion 0.11 sectionをチェックしてください.
だから、この最初のバージョンの利点と制限を見てみましょう.私は、公式ドキュメンテーションの完全なoverview節をチェックすることを勧めます.
常にいくつかの制限と非互換性を持っているベータ版で働いていることを心に留めておいてください.公式ドキュメンテーションでは、最も一般的な問題のtroubleshooting guideを見つけることができます.また、examplesissues & github projectを見てください.

事前の要件
  • 16 GBのRAM(ネイティブにコンパイルしているPC)
  • スプリングブート2.5.6
  • Java 8、Java 11、およびKotlin 1.5 +
  • GraalVMバージョン21.2.0

  • スプリングブート互換性
  • スプリングブートスターター:すべてのsupportedのものをチェックアウト、いくつかの特別な依存性管理が必要です.
  • スプリング雲2020.0.3 starters
  • バネdata & others(ロンボク、JDBCドライバー、GPRC、スプリングカフカ、…)

  • 制限
    https://www.graalvm.org/reference-manual/native-image/Limitations/

    ビルドまたはネイティブビルドツールでネイティブの春
    この記事では、両方とも、with Buildpacksにおいて、ガイドwith Native Build ToolsSpring Native Documentationを開始することになる.
    あなたが好きならこの記事のプロジェクトをクローン化できます.
    git clone https://github.com/davidgfolchApium/spring-native-beta.git
    cd spring-native-beta
    
    これは、春のネイティブドキュメントで使用されるのと同じREST APIの例ですが、両方のビルドに必要なすべての変更.

    でビルド
    これにより、1つのコマンドラインでビルド&実行することができます
    mvn spring-boot:build-image
    
    それは春の生態系でいつものように箱から働きました.
    初めてそのプロセスを終えるのに30分かかりました.
    あなたは休憩に行くことができます.

    次のビルドはkbuildに移動する必要があります.

    その後、実行します.
    docker run --rm -p 8080:8080 rest-service-complete:0.0.1-SNAPSHOT
    

    そして、それをチェックしてください
    {"id":1,"content":"Hello, World!"}
    
    http://localhost:8080/greeting
    ネイティブビルドツール
    私たちは同じプロジェクトを使用しますが、直接graalvmをインストールします.GraalVMをインストールするには、 (推奨オプション)とJDKに固有の拡張機能が必要です.
    sdk install java 21.2.0.r8-grl
    sdk use java 21.2.0.r8-grl
    gu install native-image
    
    パッケージ固有のアプリケーション
    mvn -Pnative -DskipTests package
    
    sdkman
    実行する
    ./target/spring-native-beta
    

    そして、それをチェックしてください
    {"id":1,"content":"Hello, World!"}
    

    時間前に
    我々は、フィートの印刷を減らすためにいくつかの春のAOTのオプションは、いくつかはすでに無効になっている/デフォルトで有効になっていることができます.
    http://localhost:8080/greeting
    ネイティブのヒント
    ネイティブのヒントを使用していくつかの問題を回避する必要があります.
    スプリング・ネイティブによってサポートされていない
  • ライブラリ
  • あなたのアプリまたは任意のライブラリ(ジャクソンとして)
  • によって必要なすべての反射を定義します
    春ネイティブAOTのプラグインはすべての*を生成します.プロパティ&*.メタINF/ネイティブイメージで必要とされるJSON構成ファイル.
    このアプリケーションの特定の構成は、プロパティファイルまたは注釈付きで設定できます( プロジェクトを参照).
    configure
    サンプルリポジトリ
    この において、我々はいくつかの局面の「芸術の状態」をチェックすることができます.
    ペットクリニックのWebアプリはそれらのいくつかを統合します.
    spring-native-configuration
    ネイティブイメージオプション
    いくつかのgraalvmオプションは春によってデフォルトされます、そして、いくつかは「 」と呼ばれています.そして、これらの中で、私たちは、我々が我々がこのプロトコルでサーブしなければならないかどうか指定する必要がある- enable - httpsを言います.
    source repository examples
    追跡エージェント
    それは私たちの新しいアプリケーションやライブラリを使用するために必要なすべてのネイティブのヒントを生成するのに役立つ“偉大な”ツールであるようだ.

    バージョン0.11
    このUseful optionsでは、AOTエンジンが変更されました.

  • より良いスタートアップ&メモリの改善、互換性の改善が、より少ない実行時の柔軟性.
  • AOTヒントをプログラム的に構成できる「拡張ポイント」と呼ばれる新しいアーキテクチャプラグイン.

  • Junit 5と (MocKitoはまだサポートされていない)と新しい“AOTテストサポート”.
  • その他
    スプリングは既にこの新しいバージョンを標準に統合する「スプリングブート3ネイティブサポート」を計画しています.