今週2021年11月15日のJava総まとめでは、OpenJDK JEP、JDK 18、Project Loom、Springプロジェクトの多数のポイントリリース、MicroProfile 5.0-RC2、Payara Platform、提案された新しいJakarta EE仕様、JHipster 7.4.0、TornadoVM 0.12、Apache Camel K 1.7およびKotlin 1.6.0からのニュースを特集する。
OpenJDK
Foreign Function & Memory API (2番目のインキュベーター) の JEP 419 は、JDK 18 の Candidate から Proposed to Target に昇格した。この JEP は、JDK 17 で提供された最初のインキュベーターであるForeign Function & Memory API (インキュベーター) の JEP 412 に Java コミュニティのフィードバックに基づいた改善を組み込んだ進化版だ。この2番目のインキュベーターには次の変更がある: boolean
や MemoryAddress
インターフェイスなどのメモリアクセス変数処理でのより多くのキャリアのサポート。MemoryAddress
および MemorySegment
インターフェースのより一般的な逆参照 API。MemoryType
列挙を渡さずにダウンコールメソッドを取得するより単純な API。Java 配列をメモリセグメントとの間でコピーするための新しい API。JEP 419 のレビューは2021年11月23日に完了する。
switch のパターンマッチング (2番目のプレビュー) の JEP 420 は、JDK 18の Candidate から Proposed to Target に昇格した。この JEP を使用すると、対象の switch
式で複数のパターンに対してテストと、それぞれの特定のアクションで、簡潔、安全な表現によって複雑なデータ指向のクエリが可能になる。これは JDK 17 で提供された switch のパターンマッチング (プレビュー) の JEP 406 に続く2番目のプレビューだ。機能強化には次のものがある: 同じ型のガードパターンの前に一定の case
ラベルを強制するドミナンスチェックの改善。またシールド階層でより正確な switch ブロックの徹底的なチェック。JEP 420 のレビューは2021年11月23日に完了する。
Oracle の Java 言語アーキテクトの Brian Goetz 氏は、パターンマッチングがまだ概念実証段階にあった2017年9月に InfoQ に話している。instanceof
演算子のパターンマッチング、JEP 394 は、JDK 16 で提供されている。
Linux/RISC-V ポート の JEP 422 は、Draft から Candidate ステータスに昇格した。この JEP は、JDK を無料のオープンソース RISC 命令セットアーキテクチャの Linux/RISC-V への移植を提案している。インタープリタのテンプレート、C1 および C2 JIT コンパイラ、および ZGC や Shenandoah を含む現在のすべてのメインライン GC がサポートされる。この JEP の主な焦点は、移植を JDK のメインラインリポジトリに統合することだ。
JDK 18
JDK 18 早期アクセスビルドは、ビルド 23 からさまざまな問題の修正など更新したビルド 24 が先週利用可能になった。詳細については、リリースノートに記載されている。
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) (Proposed to Target)
- JEP 420: Pattern Matching for switch (Second Preview) (Proposed to Target)
開発者は、Java Bug Database を介してバグのレポートが奨励されている。
Project Loom
Project Loom 早期アクセスビルドは JDK 18 早期アクセスビルドのビルド 22 をベースとするビルド 18-loom+5-274 がJavaコミュニティで利用可能になった。
Spring Framework
チームは複数のプロジェクトでポイントリリースの提供があり、Spring は忙しい1週間だった。
Spring Boot 2.6 は、Spring Data 2021.1、Spring HATEOAS 1.4、Spring AMQP 2.4、Spring Kafka 2.8、Spring Security 5.6、Spring Session 2021.1 への依存関係のアップグレードを行いリリースされた。その他次の新機能がある: Java ランタイム情報を備えた拡張された /info
エンドポイント。WebTestClient
インターフェイスを使用した Spring MVC アプリケーションのテストのサポート。
Spring Boot バージョン 2.4.13 とバージョン 2.5.7 もリリースされており、それぞれ 26 のバグ修正と 35 のバグ修正が行われ、ドキュメントの改善と依存関係のアップグレードが行われている。
3 のマイルストーンリリースと 1 のリリース候補の後、次の機能を備えた Spring Security 5.6.0 が Java コミュニティで利用可能になった。ラムダ式やメソッド参照の割り当て対象として使用できる新しいインターフェイス SecurityContextChangedListener
。SAML 2.0 シングルログアウトのサポート。TestSecurityContextHolder
クラスを SecurityContextHolder
クラスに伝播するサポート。詳細については、リリースノートに記載されている。
Spring Cloud Netflix バージョン 2.2.10.RELEASE は CVE-2021-22053 に対処してリリースされた。これは、spring-cloud-netflix-hystrix-dashboard
と spring-boot-starter-thymeleaf
を使用するアプリケーションでのビューテンプレートの解決中にリクエストURIパス /hystrix/monitor;[ユーザ提供データ]
で送信されるコードの実行方法が公開される脆弱性だ。
Spring Batch バージョン 4.3.4 および 4.2.8 が次のようなバグ修正が行われて利用可能になった。JobParameters
クラスに定義された getParameters()
メソッドはイミュータブルなパラメータのセットを返すようになった。MethodInvokingTaskletAdapter
クラスと NamedParameterJdbcTemplate
クラスの呼び出し時の「IllegalArgumentException: Only 1 out of 2 arguments could be assigned (2つの引数のうち1つしか割り当てることができませんでした)」というエラーメッセージの修正。SimpleJobExplorer
クラスに定義された getLastJobExecution()
メソッドでステップ実行のフェッチと実行コンテキストの確認。
Spring for Apache Kafka 2.8がリリースされた。機能は次のとおりだ。順不同の手動コミットサポート。個別の record
および batch
エラーハンドラを置き換えるための汎用的なエラーハンドラの新しいセット。また、KafkaTemplate<K,V>
クラスは既知のパーティションから特定のレコードを受信して使用できる。
Spring AMQP (Spring for RabbitMQ) 2.4 が RabbitMQ Stream Plugin の初期サポートとSpring Remote Method Invocation(RMI)のサポートを非推奨に宣言して、利用可能になった。詳細については、リリースノートに記載されている。
MicroProfile 5.0 への道
MicroProfile 5.0 への道のりで、MicroProfile Working Group は、コミュニティが開発した8個の仕様の最新アップデートで2番目のリリース候補を提供した:
- Config 3.0-RC5
- Health 4.0-RC3
- Fault Tolerance 4.0-RC5
- Metrics 4.0-RC4
- JWT 2.0-RC2
- OpenAPI 3.0-RC5
- OpenTracing 3.0-RC4
- RestClient 3.0-RC5
これらの仕様は、Jakarta EE 9.1 に準拠する。
Payara
Payara は、Payara Platform の2021年11月版をリリースした。Payara Platform Community 5.2021.9 リリースは、11の改善、6のバグ修正、11のコンポーネントのアップグレードが提供され、Payara Platform Enterprise 5.33.0 は、4の改善、4のバグ修正、2のコンポーネントのアップグレードが提供される。Community エディションでは JDK 17 のサポートが実装されているが、Enterprise Edition は安定性確認のためさらにテストしている。両方のバージョンで重大な変更は、デフォルトで無効になっている TLS 1.0 および TLS 1.1 プロトコルの削除だ。
詳細については、Community と Enterprise エディションのリリースノートに記載されている。
Jakarta EE
Jakarta EE Working Group は、仕様間の一貫性の確保するため共通のAPI、機能、およびライブラリを処理する仕様のニーズを満たすために、新しい Jakarta EE 仕様の Jakarta Commons 提案を発表した。ワーキンググループは、このドキュメントを参照してコメントによる、Java コミュニティからのフィードバックを求めている。
JHipster
JHipster のバージョン 7.4.0 が次のものでリリースされた。User
エンティティに関係した名称の修正。Vue.js に ECMAScript Modules (ESM) とマイクロフロントエンドアーキテクチャのサポートの追加。Bootstrap 5.0 へのReact JHipster ライブラリの更新。OAuth 2.0 リソースサーバとして機能時、Auth0 クレームの処理。
TornadoVM
オープンソースのソフトウェアテクノロジー企業である TornadoVM は、TornadoVM バージョン 0.12 をリリースした。統合された SPIR-V 用の新しいバックエンドのレベルゼロディスパッチャ。改善されたベンチマークフレームワーク。ベンチマークフレームワークに追加された kernel time
(カーネル時間)、および data transfers
(データ転送) の新しいメトリックス。また、新しいコマンドラインオプション --enableProfiler <silent|console>
および--dumpProfiler <jsonFile>
を導入する改善されたプロファイラ。
マンチェスター大学の Advanced Processor Technologies Research Group のリサーチアソシエイトの Juan Fumero 氏は、2020年3月に QCon London で TornadoVM を紹介し、それ以来この InfoQ 技術記事に寄稿している。
Docker を使用したサンプルアプリケーションは、この GitHub リポジトリにある。
Apache Camel K
Apache Camel K のバージョン 1.7 が次の機能でリリースされた。Quarkus Native Build と Kustomize のサポート。二次統合プラットフォーム。および Apache Camel Kamelet Catalog の新しい Kamelets。
軽量の統合フレームワークである Camel K は、Apache Camel K Runtime 1.10.0、Apache Camel Quarkus 2.4.0 Apache Camel 3.12.0、およびApache Camel Kamelets 0.5.0で構築されている。
Kotlin
JetBrains は、シールド when
ステートメント、改善された suspend
機能タイプと変換、アノテーションクラスのインスタンス化、再帰的なジェネリック型の型推論の改善などの多くの新機能で Kotlin 1.6.0 をリリースした。Kotlin/JVM、KotlinJS、および KotlinNative の機能拡張もある。開発者は、JetBrains の Kotlin 開発者アドボケイトの Anton Arhipov 氏がホストする YouTube ビデオで詳細を学ぶことができる。InfoQ は、より詳細なニュース記事をフォローアップする。