2021年11月22日は2021年のJava総まとめの中で比較的静かなニュースウィークだった。ニュースでは OpenJDK JEP、JDK 18、Project Loom ビルド 18-loom+6-282、Spring HATEOAS 1.4、Micronaut 3.2、Quarkus 2.5.0、Apache Camel Quarkus 2.5.0 および JDKMon 17.0.14 を特集する。
OpenJDK
レビューの終了後、Foreign Function & Memory API (2番目のインキュベーター)、JEP 419 は、Proposed to Target から JDK 18 の Targeted に昇格した。この JEP は、JDK 17 で提供された1番目のインキュベーターである Foreign Function & Memory API (インキュベーター)、JEP 412 を Java コミュニティのフィードバックに基づく改善を組み込んで進化している。この2番目のインキュベーターの変更点は次のとおりだ: boolean
や MemoryAddress
インターフェイスなどのメモリアクセス変数ハンドルでのより多くのキャリアのサポート。MemoryAddress
および MemorySegment
インターフェースのより汎用的な逆参照 API。ダウンコールメソッドを取得するために MemoryType
列挙を渡す必要なしで処理するより単純なAPI。また、Java 配列をメモリセグメントとの間でコピーするための新しい API。
同様に、switch のパターンマッチング (2番目のプレビュー)、JEP 420 は、Proposed to Target から JDK 18 の Targeted に昇格した。このJEPを使用すると、対象の switch
式を複数のパターンをそれぞれを特定のアクションで簡潔かつ安全に表現して、複雑なデータ指向のクエリに対してテストできる。これは、JDK 17 で提供された JEP406、switch のパターンマッチング (プレビュー) に続く2番目のプレビューだ。機能強化は次のようになる: 同じタイプのガードパターンの前に一定の case
ラベルを強制するドミナンスチェックの改善。また、switch ブロックの徹底的なチェックが、シールド階層でより正確になった。
Oracle のJava 言語アーキテクトである Brian Goetz 氏は、パターンマッチングがまだ概念実証段階にあった2017年9月に InfoQ に話している。instanceof
演算子のパターンマッチング JEP 394 は、JDK 16 で提供された。
JDK 18
JDK 18 早期アクセスビルドはビルド 24 からさまざまな問題の修正などの更新を行ったビルド 25 が先週利用可能になった。詳細については、リリースノートに記載されている。
JDK 18 の機能セットは、現在次のとおりだ:
- JEP 400: UTF-8 by Default
- JEP 408: Simple Web Server
- JEP 413: Code Snippets in Java API Documentation
- JEP 416: Reimplement Core Reflection with Method Handles
- JEP 417: Vector API (Third Incubator)
- JEP 418: Internet-Address Resolution SPI
- JEP 419: Foreign Function & Memory API (Second Incubator)
- JEP 420: Pattern Matching for switch (Second Preview)
開発者は、Java Bug Database を介したバグの報告が奨励される。
Project Loom
Project Loom 早期アクセスビルドは ビルド 18-loom+6-282 が Java コミュニティで利用可能になった。JDK 18 早期アクセスビルドのビルド 24 に基づいている。
Spring Framework
Spring チームにとって忙しかった2週間後、先週の唯一の活動は、次のような新機能を備えた Spring HATEOAS 1.4 のリリースだ: レベル 4 URI テンプレートサポート。非複合リクエストパラメータレンダリングのサポート。HAL-FORMS メディアタイプサポートの改善。追加の HTML 入力タイプ。Spring Framework 5.3.13 および Jackson 2.13.9 への依存関係のアップグレード。詳細については、変更ログに記載されている。
Micronaut
Micronaut Foundation は、GraalVM 21.3.0、Gradle Plugin 3.0.0、Kotlin 1.6.0、HTTP 機能のホストのサポート、Micronaut Data、Micronaut Security、Micronaut Kubernetes、および Micronaut Elasticsearch などのモジュールのいくつかの更新で Micronaut 3.2 をリリースした。詳細については、ドキュメントに記載されている。
Quarkus
Red Hat は Quarkus 2.5.0.Final を次の機能でリリースした: GraalVM コミュニティエディションのダウンストリームディストリビューションである Mandrel 21.3 への依存関係のアップグレード。ネイティブモードでの Hibernate ORM の JPA エンティティリスナのサポート。quarkus.http.header
プロパティを使用してサーバレスポンスに HTTP ヘッダを追加する機能。Quarkus 拡張機能と開発モードおよびテストインフラストラクチャの使いやすさの向上。
Apache Camel
Quarkus との整合性を維持しながら、Camel Quarkus のバージョン 2.5.0 がリリースされ、Quarkus 2.5.0.Final、Apache Camel 3.13.0、テストカバレッジとドキュメントが改善された。詳細については、課題リストに記載されている。
JDKMon
インストールされた JDK をモニタおよび更新する新しいツールである JDKMon の最新バージョンが、Javaコミュニティで利用できるようになった。Azul のプリンシパルエンジニアである Gerrit Grunwald 氏によって作成されたバージョン 17.0.14 には、次のような新機能が付属している: SDKMAN! にホストされた JDK ディストリビューション を、可能な場合はパスを検索して該当する Java フォルダーを自動的に追加し、見つかった更新で可能な場合はリリースの詳細へのリンクの表示。