Quarkus リリースノートまとめ

blog1.mammb.com


Quarkus 2.9

2022年05月

  • WebAuthn 拡張
    • quarkus-security-webauthn 拡張による WebAuthn 認証
    • パスワードによる認証に代わり、指紋認証や顔認証といった生体認証やスマートフォンやセキュリティキーなどの外部デバイスを用いて認証
  • OpenID Connect プロバイダの事前設定
    • OIDCプロバイダに対する事前設定の提供
    • GitHub, Google, Microsoft, Apple, Facebook, Twitter, Spotify
  • OIDC バックチャネルログアウトのサポートが追加
  • Reactive Routes と RESTEasy Reactive のHTTPレスポンスのボディ圧縮をサポート
  • Kafka - Confluent Schema Registry サポートの追加
  • 特定サブパスへのHTTPヘッダを追加が可能となった
    • quarkus.http.filter 構成プロパティを使用
  • ログのローテーションの変更(デフォルトで10MBに設定)
    • quarkus.log.file.rotation.max-file-size
  • H2 Database の 1.4 から 2.1 へのアップグレード
  • Kotlin 1.6.20 へアップグレード
  • Scala 2.13にアップグレード


Quarkus 2.8

2022年04月

  • Assertj が BOM から外された
    • バイナリ互換性が頻繁に壊れるようになっていたため
  • 新しいRESTレイヤーをデフォルトで提供
    • RESTEasyスタックに変わり RESTEasy Reactive という新しいRESTレイヤーがデフォルトに
    • 従来のブロック型ワークロードとリアクティブ型ワークロードの両方を同様にサポート
  • GraalVM 22.0 へのアップグレード
  • OIDC - Proof Of Key for Code Exchange(PKCE)のサポート
  • 新しい QuarkusTransaction API によりトランザクションをより細かく制御可能となった
  • Elasticsearch Dev Services による開発モードでのコンテナ自動開始


Quarkus 2.7

2022年02月

  • Quarkus CLI のツールチェーン公開
    • Homebrew JBang SDKMAN! で Quarkus CLI が利用可能となった
    • 加えて、プロジェクトで使用したいJavaのバージョンを定義できるようになった
      • CLI にて --java=17 オプションを使用
  • 開発モードに対話型ターミナルが追加された
    • 開発モードで : にて開く
  • SmallRye Stork が 1.0.0 に更新
    • service discovery と client-side load-balancing フレームワーク
  • OpenId Connect の設定簡素化
    • GitHub、Google、Appleなどの有名なOIDCプロバイダの設定が簡素化された
  • Hibernate ORM の実行時設定(既存は構築時に固定)
  • quarkus.hibernate-orm.database.default-catalog
  • quarkus.hibernate-orm.database.default-schema
  • Hibernate Search 6.1 へのアップグレード
  • MongoDB の ネイティブの実行ファイルでの mongo+srv:// サポート(実験的)
  • Reactive REST クライアントのプロキシ認証とグローバルプロキシー設定サポート
  • Oracle Reactive SQL クライアントのサポート
  • RESTEasy Reactive に Kotlin シリアライゼーションのサポート追加
  • Cache エクステンションのメトリクスが、Micrometer で記録されるようになった
  • JNDI がデフォルトで無効となった
  • JIBのイメージが、ターゲットとするJavaのバージョンに依存するようになった


Quarkus 2.6

2021年12月

  • いくつかのエクステンションが Quarkiverse Hub に移動した
    • Quarkiverse Hubは、コミュニティが管理する拡張機能のためのホームとなる
    • エクステンションを Quarkiverse Hub でホストしコアリポジトリのサイズを縮小
  • SmallRye Reactive Messaging が 3.13 に、 Kafka クライアントが 3.0.0 にアップグレードされた
  • Cache アノテーションサポートに加え、プログラマティックAPIをCache拡張として提供
  • Smaller image for native executables
    • ネイティブ実行ファイル用の Dockerfile ベースイメージに quay.io/quarkus/quarkus-micro-image:1.0 を使用
    • UBI Microをベースとしており、ネイティブイメージのサイズが縮小される
  • ネイティブ実行ファイルのビルトインUPX圧縮のサポートが追加された
  • ネイティブの実行ファイルにおけるAWTのサポートが改良され quarkus-awt エクステンションが提供された
  • コンパイルソース/ターゲットが Java 11 -> Java 17 へ変更
  • Kotlin 1.6 へアップグレード
  • Apache Camel 3.14 へアップグレード
  • Camel JFRエクステンションにより、Java Flight RecorderでCamelアプリケーションを診断可


Quarkus 2.5

2021年11月

  • GraalVM / Mandrel 21.3へのアップグレード
  • Hibernate ORM でのJPAエンティティリスナーの正式サポート
  • quarkus.http.header によりHTTPレスポンスヘッダーを設定できるようになった
  • @SecureField によりロールに応じたJSON出力を制御可能となった
public class Person {

    private String firstName;

    @SecureField(rolesAllowed = "admin")
    private String lastName;
}
  • Infinispanクライアント拡張のアップグレード(13.0.0.Final)
  • Flyway 8.0 へ更新
  • Reactive SQLServerクライアントの暗号化サポート
  • Dev Services の Oracle サポート追加
  • Camel拡張のアップグレード(3.13.0)
  • Kubernetes拡張
    • Quarkus configuration で service bindings を定義可能に
  • Maven オフラインビルド対応
    • quarkus:go-offline
  • コマンドラインアプリケーションのテストでパラメータ定義が可能に
    • QuarkusTestProfile


Quarkus 2.4

2021年10月

  • Hibernate Reactive

    • Session を開始する全てのメソッドがリアクティブ化された
  • Kafka Streams DevUI

    • Quarkus DevUI に、Kafka(分散メッセージキュー)のトポロジービジュアライザーが追加された
  • マルチモジュールプロジェクトにおける継続的テスト

    • マルチモジュールプロジェクトで、全てのモジュールのテストが実行されるようになった
    • これに伴い追加されたオプションは以下
    • quarkus.test.only-test-application-module false(デフォルト) の場合、依存関係にあるすべてのモジュールのテストを実行
    • quarkus.test.include-module-pattern groupId:artifactId を指定する正規表現で対象とするテストを指定
    • quarkus.test.exclude-module-pattern groupId:artifactId を指定する正規表現で除外するテストを指定
  • AWT extension の追加

    • AWT/Java2D 向けの io.quarkus:quarkus-awt 拡張により画像のリサイズなどのユースケースに対応


Quarkus 2.3

2021年10月

  • Dev Services の Neo4J サポート追加
  • Panache flavor によるロギング
    • private static final Logger LOG = ... のボイラープレートが不要
import io.quarkus.logging.Log; 

class MyService { 
    public void doSomething() {
        Log.info("Simple!"); 
    }
}
  • CLIアプリケーションのテストサポート
    • @QuarkusMainTest @QuarkusMainIntegrationTest
  • MongoDB Liquibase extension の追加
  • Hibernate Interceptorsのサポート追加
@PersistenceUnitExtension("nameOfYourPU")
public static class MyInterceptor extends EmptyInterceptor { 
    @Override
    public boolean onLoad(Object entity, Serializable id, Object[] state, 
            String[] propertyNames, Type[] types) {
        // ...
        return false;
    }
}


Quarkus 2.2

2021年08月

  • GraalVM 21.2 へのアップグレード
  • Dev Services の一括無効化が可能となった
    • quarkus.devservices.enabled=false
  • RESTEasy Reactive でスレッドモデルが強化された
    • RESTメソッドのプロトタイプに応じて、ブロッキングまたはノンブロッキングのスレッドモデルが選択可能となった
    • 同期メソッドはワーカースレッドがデフォルトとなり、非同期メソッドはI/Oスレッドがデフォルト
    • Quarkus 2.3から RESTEasy reactive が HTTP API 実装のデフォルトになる予定
  • MongoDB のサービスバインディング追加
  • Narayana LRA extension の追加
    • Long Running Actions
    • JAX-RSメソッドに@LRAアノテーションを付けてLRAを開始


Quarkus 2.1

2021年07月

  • Dev Service で Keycloak が利用可能となった
    • Dev Service で OpenId Connect (OIDC) 用のコンテナが自動起動
  • Microsoft SQL Server 向けの Reactive 拡張(ドライバ)の追加
    • quarkus-reactive-mssql-client
  • Kotlin 1.5 対応


Quarkus 2.0

2021年06月

  • JDK 11、GraalVM 21.1、Vert.x 4、MicroProfile 4
  • Continuous Testing
    • コンソール(または Dev UI)で r を押すと有効に
  • Quarkus CLI
  • SmallRye GraphQL Client エクステンション
  • Hibernate ORM が 5.5 にアップグレード
  • CDI の Decorator サポート
  • MongoDB with Panache によるトランザクションサポート
  • RESTEasy Reactive, REST Client, Reactive Messaging エクステンションのKotlin コルーチンサポート
  • Amazon SSM エクステンション


Quarkus 1.13

2021年03月

  • DevServices の追加
    • devモードで自動的にテスト用のコンテナが自動設定される
  • OpenTelemetry 用のエクステンションquarkus-opentelemetryの導入
    • リクエストのトレースが可能
  • Kubernetes Service Binding
    • Service Binding Specification for Kubernetes の実装を提供
    • quarkus-kubernetes-service-binding エクステンション
  • RESTEasy Reactive ベースの RESTクライアントエクステンション
    • quarkus-rest-client-reactive
  • Vert.xベースのWebsocketsエクステンション
    • quarkus-websockets
  • quarkus-jacoco エクステンションによるカバレッジレポートのサポート
  • @QuarkusIntegrationTest でのアーティファクトに依らないテスト


Quarkus 1.12

2021年02月

  • パッケージタイプとして Fast jar がデフォルトとなった
    • 1.5 で導入された起動時間を短縮する新しいパッケージ形式
    • これに伴い quarkus-app ディレクトリに実行可能 jar が生成される
  • RESTEasy Reactive での Multipart 対応の追加
  • GraalVM 21.0 へのアップグレード


Quarkus 1.11

2021年01月

  • RESTEasy Reactive の導入
    • Vert.xレイヤーで動作する新しいJAX-RS実装が提供された
  • Dev UIの導入
    • devモードで利用できる開発用のUIが利用可能となった
  • Micrometer サポートの向上
  • Spring Data REST エクステンション
  • Health endpoints などのアプリケーションがエンドポイントの名前空間変更(/q/)
  • Hibernate 固有の SessionFactory と Session がDI可能となった
  • Jackson において FAIL_ON_UNKNOWN_PROPERTIES がデフォルト無効となった
  • jbang 統合の強化
    • devモード、BOMをサポート
  • GraalVM 20.3


Quarkus 1.10

2020年12月

  • JSON がデフォルトの Content Type になった
    • つまり @Produces や @Consumes アノテーションを省略可能
  • CodeStarts がデフォルトのプロジェクト生成ツールとなった
  • Micrometer 拡張に StatsD と SignalFX レジストリが追加された
  • Swagger/GraphQL/Health/OpenAPI が一貫したUIとなった
  • Qute テンプレートエンジンで表示されるエラーページが改善された
  • ビルド時に固定されていた Hibernate ORM の設定が(部分的に)実行時に変更可能となった
  • Hibernate ORM が 5.4.24にアップグレードされた
  • SmallRye Reactive Messaging が 2.5.0 に、Mutiny が 0.11.0 にアップグレードされた
    • Reactive SQL Clients でマルチデータソースをサポート
  • Amazon IAM 拡張が導入された
  • Quarkusアプリケーションを Google Cloud にデプロイするための新しいガイドが提供された


Quarkus 1.9

2020年10月

  • Micrometer 拡張の成熟
    • 1.8で導入したMicrometer 拡張は、Quarkus におけるメトリクス収集に推奨できるようになった
  • Bean Validation が Reactive Routes メソッドで利用可能となった
  • SmallRye Reactive Messaging が 2.4.0 にアップグレード
  • @TestTransaction が追加された
    • テスト終了時にトランザクションが自動的にロールバックできる
  • Redis インスタンスへの接続が複数の Redis Clients により可能になった
  • JAXB 拡張に JAXP が含まれていたが、これが分離された
  • Hibernate ORM が 5.4.22 にアップグレードされた


Quarkus 1.8

2020年9月

  • 複数 Persistence Units のサポート
  • Micrometer extension拡張
    • quarkus-micrometer
  • jbang を使ったスクリプトアプリケーションサポート
  • GraalVM 20.2
  • SmallRye OpenAPI サポート
    • quarkus.smallrye-openapi.store-schema-directory
  • Quartz サポート
    • QuartzのジョブでCDIインジェクションが可能に
  • MongoDB with Panache の Kotlin サポート
    • quarkus-mongodb-panache-kotlin


Quarkus 1.7

2020年8月

  • 高レベル/低レベル双方のElasticsearch REST クライアント
  • Vert.x Redis クライアント
  • Hibernate ORM モジュールの Hibernate Envers サポート
  • サーバレスフレームワーク Funqy の改善
    • Funqy HTTP bindings へのクエリパラメータの注入
    • Google Cloud Platform のサポート
  • Reactive Routes の改善
    • @Param, @Header, @Body アノテーションの追加
    • Mutiny types の完全なサポート
  • Db2 JDBC driver の拡張
  • セキュリティテスト基盤
    • @TestSecurity アノテーションの追加
  • 複数 extension registries のサポート


Quarkus 1.6

2020年7月

  • AppCDS(Application Class Data Sharing)アーカイブの生成サポート
    • Java 12でデフォルト有効化されたCDS機能による起動時間短縮
  • GraalVM 20.1.0へのアップグレード
  • CDIの開発モードエンドポイント追加
  • リクエストボディの最大サイズ制限が可能となった
  • 新しい拡張
    • Google Cloud Functions
    • リアクティブなIBM Db2クライアント
    • Apache Cassandra クライアント
    • WebJars ロケーター
    • Spring @Scheduled サポート
    • SmallRye GraphQL 拡張モジュールで OpenTracing が有効に
    • OptaPlanner 拡張が Quarkus コアリポジトリから OptaPlanner リポジトリに移動


Quarkus 1.5

2020年6月

  • Fast-jar パッケージフォーマットが追加された
    • 従来の jar に変わり将来バージョンでデフォルトとなる予定
  • Picocli 拡張によりコマンドラインアプリケーションの作成が簡単に
  • gRPC 拡張が追加された
  • GraphQL 拡張が追加された
    • EclipseのMicroProfile GraphQL 実装
  • Amazon Services 拡張が追加された
    • Amazon DynamoDB - NoSQL database
    • Amazon KMS - Key Management Service
    • Amazon S3 - Object storage service
    • Amazon SES - Email service
    • Amazon SNS - Notification service
    • Amazon SQS - Queue service
  • Panache 拡張の機能拡充
  • JAX-RS と Hibernate ORM によるCRUD REST APIの作成が簡素化
  • Spring Cache アノテーション
  • Blaze Persistence 拡張


Quarkus 1.4

2020年4月

  • Java11 が標準となり Java8 が非推奨になった
    • Java8 のサポートは Quarkus 1.6 で終了予定
  • コマンドラインアプリケーションの構築が可能となった
  • HTTP/2 サポートが追加された(デフォルト有効)
  • Funqy という FaaS フレームワークが導入された
    • Amazon Lambda や Azure Functions などで利用できる
  • CDI ビーンズのモック化が簡単に可能となった
  • MongoDB クライアントがバージョン4にアップグレードされた
  • Vault KV Secret Engine がバージョン2にアップグレードされた
  • SmallRye Reactive Messaging がバージョン2にアップグレードされた
  • 新しい拡張
    • Keycloak Admin Client 用の専用の拡張追加
    • Amazon Alexa サポートの追加
    • LDAP 認証の追加


Quarkus 1.3

2020年3月

  • クラスローダの刷新により潜在的な問題が解消された
  • 単一の Vert.x インスタンスで処理を行うことでリソースが低減
  • ASCIIアートのバナー追加
  • Mutiny という新しいリアクティブプログラミングAPIの導入
  • Kubernetes や OpenShift へのデプロイの簡素化
  • SmallRye 拡張が Eclipse MicroProfile 3.3 向けにアップデート
  • HTTP read timeout の追加
    • デフォルトで 1分
  • GraalVM 20.0 サポート
  • Hibernate ORM の bytecode enhancement による自動関連管理は今後無効
    • quarkus.hibernate-orm.second-level-caching-enabled で second level caching を無効化可能
  • Spring 互換レイヤの最適化
    • 必要なAPIとアノテーションにトリムダウンされ、サポート機能のみの依存
  • 新しい拡張
    • コンテナイメージのビルド容易化
    • OptaPlanner
    • Security JPA
    • Spring Cloud Config Client
    • AWS X-Ray
    • Qpid JMS
    • Liquibase
    • Reactive MongoDB with Panache


Quarkus 1.2

2020年1月

  • GraalVM 19.3.1 をサポート
  • キャッシュ extension
    • CDI Beans の戻り値をアノテーションベースでキャッシュ可能
  • メトリクスの継続的な改善
    • データベースコネクションプール(Agroal)のメトリクス
    • Hibernate ORM のメトリクス
  • HashiCorp の VAULTのサポート
    • CredentialやAPI 鍵の保管から、ユーザ・サインアップ用のパスワードの暗号化などを扱うシークレットデータ管理ツール
  • MicroProfile Fault Tolerance の新しい実装
    • Netflix の Hystrix から SmallRye へ移行
  • Hibernate ORM で自動関連管理を無効化した
  • Hibernate Validator で Accept-Languageヘッダーによりロケールを自動解決
  • CDI (ArC) でのトランザクションオブザーバのサポート追加
  • Mailer 拡張で、メール送信時に Qute テンプレートが利用可能


Quarkus 1.1

2019年12月

  • GraalVM は 19.2.1 をサポート
    • GraalVM 19.3 へのアップグレードはいくつか問題があり Quarkus 1.2 に持ち越し
  • 新しいテンプレートエンジン Qute を experimental(実験的)として追加
  • Configuration フレームワークの更新
    • quarkus-config-yaml 拡張で YAML 形式をサポート
  • Spring API のサポートに Spring Security API を追加
  • Gradle のバージョンを 6系に変更
    • 旧来ユーザは Gradle plugin の宣言を変更する必要あり
  • Logging の改善
    • logging-gelf 拡張で Graylog Extended Log Format(GELF)をサポート
    • logging-json 拡張で JSON 形式のログフォーマットをサポート
    • logging-sentry 拡張で Sentry によるイベント監視をサポート
  • Kogito 0.6 へのアップデート
    • Kogito はルール/プロセスエンジン
  • Quartz 拡張にクラスタ化されたJOBのサポートを追加