BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Javaニュース ラウンドアップ: JDK 21アップデート、Spring Data 2023.0、JobRunr 6.2、Micronaut 4.0 Milestone

Javaニュース ラウンドアップ: JDK 21アップデート、Spring Data 2023.0、JobRunr 6.2、Micronaut 4.0 Milestone

2023年5月8日のJavaラウンドアップは、OpenJDK、JDK 21、GraalVM Native Build Tools 0.9.22, Spring Framework, Spring Data and Spring Shell releases, Micronaut 4.0-M3, Quarkus 3. 0.3、Eclipse Vert.xリリース、Micrometer Metrics and Tracingリリース、Groovy 4.0.12、Tomcatリリース、Maven 3.9.2, Piranha 23.5.0, Reactor 2022.0.7, JobRunr 6.2, JDKMonリリース、Devoxx UKのニュースを掲載。

OpenJDK

JEP 448 Vector API (Sixth Incubator)は、Proposed からTarget昇格し、JDK 21 をTargetedとすることになった。今回のJEPは、Project Panamaの支援のもと、過去5回のインキュベーションからのフィードバックに対応した機能強化が盛り込まれている。JEP 438, Vector API (Fifth Incubator) は JDK 20 で、JEP 426, Vector API (Fourth Incubator) は JDK 19 で、JEP 417, Vector API (Third Incubator) は JDK 18 で、JEP 414,Vector API (Second Incubator)は JDK 17 で、JEP 338,Vector API (Incubator)は JDK 16 でincubator moduleとして提供されている。この機能は、JEP 424 Foreign Function & Memory API (Preview)で定義されているように、MemorySegment との間でベクターをロードおよびストアするためにVector APIを強化することを提案している。

JEP 441, Pattern Matching for switch は、Proposed からTarget昇格し、JDK 21 をTargetedとすることになった。今回のJEPでは、この機能を最終的に決定し、過去4回のプレビューからのフィードバックに対応した機能強化を盛り込んだ。
JEP 433,Pattern Matching for switch (Fourth Preview),delivered in JDK 20; JEP 427,Pattern Matching for switch (Third Preview),delivered in JDK 19; JEP 420,Pattern Matching for switch (Second Preview),delivered in JDK 18; and JEP 406,Pattern Matching for switch (Preview),JDK 17で配信された。この機能は、switch式やステートメントのパターンマッチで言語を強化するものだ。InfoQでは、より詳細なニュースを追って伝える。

JEP 440, Record Patternsは、ProposedからTargeted昇格しJDK 21 をTargetedとすることになった。今回のJEPはまた、この機能を最終化し、前の2回のプレビューからのフィードバックに対応した機能強化を組み込んでいる。JEP 432レコードパターン(セカンドプレビュー)(JDK 20で提供)、JEP 405レコードパターン(プレビュー)(JDK 19で提供)だ。この機能は、レコード値を分解するためのレコードパターンで言語を強化する。レコードパターンは、タイプパターンと併用することで、"強力で宣言的、かつ複合的なデータナビゲーションと処理の形式を可能にする"。型パターンは、最近、switchケースラベルで使用するために 拡張された。: JEP 420, Pattern Matching for switch (Second Preview), in JDK 18, and JEP 406, Pattern Matching for switch (Preview), in JDK 17. JEP 432からのもっとも大きな変更点は、拡張for文のヘッダーに現れるレコードパターンのサポートを削除したことだ。InfoQでは、より詳細なニュースを追って伝える。

JEP 439Generation ZGCは、ProposedからTarget昇格し、JDK 21 をTargetedとすることになった。このJEPは、"Zガーベッジコレクタ(ZGC)を拡張して、若いオブジェクトと古いオブジェクトの世代を別々に維持することにより、アプリケーションのパフォーマンスを改善することを提案している。これにより、ZGCは若くして死ぬ傾向にある若いオブジェクトをより頻繁に収集できる"。 InfoQでは、より詳細なニュースを追って伝える。

JEP 449Deprecate the Windows 32-bit x86 Port for RemovalがJDK 21のCandidateからProposedにTarget昇格した。この機能JEPは、マイクロソフトのシニアプログラムマネージャーであるGeorge Adams氏によって紹介され、将来のリリースで削除することを意図して、Windows x86-32ポートを非推奨にすることを提案している。JEP 436 Virtual Threads (Second Preview)を32ビットプラットフォームで実装する意図がないため、このポートのサポートを削除することで、OpenJDK開発者は新機能の開発を加速させることができる。このレビューは2023年5月18日に終了する予定だ。

EP 443Unnamed Patterns and Variables (Preview)がJDK 21のCandidateからProposed、Target昇格した。このプレビューJEPは、"コンポーネントの名前やタイプを明記せずにレコードのコンポーネントにマッチする無名パターンと、初期化できるが使用されない無名変数を使用して言語を強化する "ことを提案している。いずれも、r instanceof _(int x, int y)r instanceof _のようにアンダースコア文字で表記される。プレビューは2023年5月15日に終了する予定だ。

JEP 453, Structured Concurrency (Preview) は、JEP Draft 8306641 から Candidate ステータスに昇格した。以前はインキュベートAPIだったが、この最初のプレビューでは、過去2回のインキュベートからのフィードバックに対応した機能強化が盛り込まれている。 JEP 428 Structured Concurrency (Incubator)(JDK 19で提供)、JEP 437 Structured Concurrency (Second Incubator)(JDK 20で提供)だ。唯一の大きな変更点は、TaskHandleインターフェースのget()メソッドがFutureインターフェースのresultNow()メソッドと同じ動作をするように再構築されたため、StructuredTaskScopeクラスで定義されたfork()メソッドがFutureではなくTaskHandleのインスタンスを返す点だ。

JEP 452Key Encapsulation Mechanism APIは、JEP Draft 8301034 から Candidate ステータスに昇格した。この機能JEPタイプは、標準的なKey Encapsulation Mechanism(KEM)アルゴリズムの実装を満たすこと、より高度なセキュリティプロトコルによるKEMの使用例を満たすこと、サービスプロバイダがKEMアルゴリズムのJavaまたはネイティブ実装をプラグインできることを提案する。この草案は最近更新され、DerivedKeyParameterSpecクラスを廃止し、encapsulate(int from, int to, String algorithm)メソッドの引数リストにフィールドを配置するという大きな変更が加えられた。

JEP 451エージェントの動的ロードを許可しないための準備は、EP Draft 8306275からCandidate昇格した。当初は、Disallow the Dynamic Loading of Agents by Defaultとして知られ、JEP Draft 8305968Integrity and Strong Encapsulationのアプローチに従って、このJEPは、実行中のJVMへのエージェントの動的ロードをデフォルトで禁止するという当初の意図から、実行中のJVMにエージェントが動的にロードされたときに警告を発するように発展している。このJEPの目標は、サービス性と完全性のバランスを再評価し、エージェントを動的にロードする必要がない大多数のツールが影響を受けないようにすることだ。

JEP 440, Record Patterns, および JEP 441, Pattern matching for switchjoint draft specification が、Javaコミュニティによるレビューのために、Oracleの技術スタッフのコンサルティングメンバーであるGavin Bierman氏によって更新されだ。レコードパターンの型推論の仕様が更新され、non-denotable型の「any」パターンとパターンの解決プロセスが削除され、型パターンが「ヌルマッチング」であるか否かのコンパイル時の概念が採用された。

オラクルのJVMアーキテクトであるJohn Rose氏は、オブジェクトヘッダを64ビットに削減することを目標とするProject LilliputProject Valhallaの開発にどのような影響を及ぼすかについて懸念を示すホワイトペーパー発表した。

JDK 21

また、JDK 21早期アクセスビルドBuild 22も2023年5月に公開され、様々な問題の修正を含むBuild 21からの更新が行われている。このビルドの詳細は、リリースノートに記載されている。

JDK 21では、開発者はJava Bug Databaseを通じてバグを報告することが推奨されている。

GraalVM Native Build Tools

バージョン1.0に向け、Oracle Labsは、GraalVM Native Imageとの相互運用のためのプラグインからなるGraalVMプロジェクト、Native Build Toolsversion 0.9.22をリリースした。この最新リリースでは、GraalVM Reachability Metadata RepositoryのURLルックアップの修正、default-for性のサポートの追加、Metadata 0.3.0への依存関係のアップグレードなど、注目すべき変更がされている。このリリースの詳細は、変更履歴に記載されている。

Oracle LabsのGraalVMチームの主任研究員であるFabio Niephaus氏は、ネイティブイメージビルドにおけるGraalVMのメモリ使用量の改善について発表した。特に、利用可能なメモリのみを使用する、全体のメモリ使用量が少ない、メモリ制限を32GBに引き上げた後の大規模アプリケーションのビルドが高速化された。

Spring Framework

Spring Framework 6.0.9では、バグフィックス、ドキュメントの改善、依存関係のアップグレード、およびCollectionFactoryクラスにおけるMultiValueMapインターフェイスと共通のMap実装の一貫サポート、TypeUtilsクラスにおける暗黙境界の内部定数の導入、プロファイル式用の環境インターフェースの新しいmatsProfiles()メソッドを含む新機能がリリースされた。このリリースの詳細は、リリースノートに記載されている。

Spring Data MongoDB、Spring Data Neo4j、Spring Data JPAのキーセットベーススクロールが追加されたSpring Data 2023.0.0 (コードネーム:Ullman)がリリースされた。QuerydslとKotlinによるAOT処理のサポート強化、Spring Dataのサブプロジェクトのアップグレードが提供されている。このリリースの詳細は、リリースノートに記載されている。

Spring Dataのサービスリリースであるバージョン2022.0.6と2021.2.12は、バグ修正と以下のようなサブプロジェクトの依存関係のアップグレードを同梱している。 Spring Data Commons 3.0.6と2.7.12、Spring Data MongoDB 4.0.6と3.4.12、 Spring Data Elasticsearch 5.0.6と4.4.12、 Spring Data Neo4j 6.0.6 と 6.3.12だ。

Spring Shellのバージョン3.1.0-RC1、3.0.3、2.1.9がリリースされた。Asciidoctor Spring Backendsへの文書の移行が特徴だ。JLine 3.23.0への依存関係のアップグレード、およびバグ修正のバックポートだ。これらのバージョンは、それぞれSpring Bootのバージョン3.1.0-RC2、3.0.6、2.7.11をベースとしている。これらのリリースの詳細は、バージョン3.1.0-RC1バージョン3.0.3バージョン2.1.9のリリースノートに記載されている。

Micronaut

Micronaut Foundationは、Micronaut Framework 4.0.0の第2および第3マイルストーンリリースを提供した。バグフィックスや改善、新機能として、クライアントとサーバーの両方で使用できる新しいインターフェース、MessageBodyWriterMessageBodyReaderは、カスタム書き込みと読み取り応答を追加する単一の場所として、アノテーションベースCORS構成のサポート、service-http-client.enabledプロパティのデフォルトがfalseに設定、Micronaut注釈における編集時のチェック式サポートなどがある。これらのリリースの詳細は、バージョン4.0.0-M2およびバージョン4.0.0-M3のリリースノートに記載されている。

Quarkus

Quarkus 3.0.3.Finalは、3回目のメンテナンスリリースで、次のような重要な変更点がある。応答フィルターのSimpleResourceInfoインターフェースのNULLパラメータが原因で発生する例外の修正、コンテナのランタイム検出の改善、Hibernate ORMの不要な情報ログに対する対処、Quarkus 3.0.1でのリアクティブネイティブモードにおける予期しない動作の解決である。このリリースの詳細については、変更履歴に記載されている。

WildFly

WildFlyチームは、WildFly 29からWildFly 34のベータ版および最終リリースを含む2023-2024年のリリース計画を発表した。Jakarta EE 10への移行期間中、リリースは一時的に機能ボックス型アプローチに移行していた。この新しいリリーススケジュールは、以前使用されていたタイムボックス型アプローチに戻るものだ。

Eclipse Vert.x

Eclipse Vert.x 4.4.2がリリースされ、依存関係のアップグレードや、メッセージをインターセプトするためのGraphQLWSHandlerクラスの新しいmessageHandler()メソッド、SchemaRepositoryインターフェースの同時アクセスによる不安定な動作を改善している点が特徴である。また、SQLRowStreamクラスのtoObservable()メソッドを改良し、NullPointerExceptionが発生する可能性を排除した。このリリースの詳細は、リリースノート非推奨事項および変更点に記載されている。

同様に、Eclipse Vert.x 3.9.16がリリースされ、Vert.x 3.9.14へのアップデート後にイベントループをブロックするメトリクス、およびSTOMPサーバープロセスのクライアントフレームが当初はコネクトフレームを送信しないといった目立った修正を実現している。3.9リリーストレインは2022年に耐用年数を迎えるが、サービスリリースは2023年の終わりまで維持される。このリリースの詳細は、リリースノートに記載されている。

Micrometer

DynatraceExporterV2クラスを使用してメトリクスをエクスポートする際の全体的なメモリ割り当ての削減、CountedAspectクラスのコンパイラパラメータのメタデータが不要になったこと、JVMで実行中のアプリケーションスレッドの総数に対するメトリクスの追加などの新機能を備えたMicrometer Metricsのバージョン1.11.0、1.10.7、1.9.11がリリースされた。これらのリリースの詳細は、バージョン1.11.0バージョン1.10.7バージョン1.9.11のリリースノートに記載されている。

同様に、ObservationAwareSpanThreadLocalAccessorクラスにObservationRegistryインターフェースのインスタンスを受け入れる新しいコンストラクタ、Micrometer Metricsの変更に対応したアノテーション、Propagator, Propagator.Getter, Propagator.Setter インターフェースのノーオープン実装など、注目すべき変更を提供するバージョン 1.1.1, 1.1.0, 1.0.5 のMicrometer Tracingがリリースされている。 また、BaggageManagerインターフェースのgetBaggage()メソッドが改良され、Baggageが存在しない場合にBaggageインターフェースのインスタンスを一貫して返すようになった。これらのリリースの詳細は、バージョン1.1.1バージョン1.1.0バージョン1.0.6バージョン1.0.5のリリースノートに記載されている。

Apache Software Foundation

Apache Groovy 4.0.12のリリースでは、バグフィックス、依存関係のアップグレード、改良が行われている。抽象構文木(AST)変換でジェネリックを使用してClassNodeクラスのインスタンスを適用する際に、より詳細なエラーメッセージを表示するようにした。そのほか、Groovy-Integrated Query (GINQ)における仮想スレッドのサポート、およびJavaレコードを使用した生成メソッドのバイトコード最適化が盛り込まれている。本リリースの詳細は、リリースノートに記載されている。

Apache Tomcatのバージョン11.0.0-M6および9.0.75では、次のような顕著な変更が行われている。JsonAccessLogValveクラスの改善により、ヘッダーと属性のより多くのパターンをサポートする。AccessLogValueクラスで、縦書きタブの出力が\vから\u000bに変更され、SimpleDateFormatクラスのインスタンスが逐語的な文字を含む場合にタイムスタンプの出力をエスケープするように改善した。HTTPコネクタの設定であるrejectIllegalHeaderallowHostHeaderMismatchのサポートは、バージョン9.0.75で非推奨となり、バージョン11.0.0-M6で削除されて、以前のデフォルト値にハードコーディングされるようになった。これらのリリースの詳細については、バージョン11.0.0-M6およびバージョン9.0.75のリリースノートに記載されている。

Apache Maven 3.9.2 がリリースされた。プラグインが Maven Compat に依存している場合に警告を表示する、Maven Mojo が失敗したときに例外を抑制して表示する、プラグイン検証の改善と拡張、コマンドライン引数 -Dmaven.repo.local.recordReverseTree=true を使用したときの追加情報の表示などの改善点がある。このリリースの詳細は、リリースノートに記載されている。

Piranha

Piranha 23.5.0のリリースでは、外部コンポーネントのアップデート、JDK 20でリリースする際にJDK 18+モジュールがリリースされるようにする、-ssl-keystore-file--https-keystore-file に変更するなど、注目すべき変更点がある。また、MimeTypeManagerLoggingManagerのインターフェース、TEMPDIR拡張、Piranha Namingモジュールはすべて非推奨となった。このリリースに関する詳細は、ドキュメント問題追跡に記載されている。

Project Reactor

7回目のメンテナンスリリースとなるProject Reactor 2022.0.7では、reactor-core 3.5.6, reactor-netty 1.1.7, reactor-kafka 1.3.18 への依存関係のアップグレードが行われる。また、reactor-pool 1.0.0、reactor-addons 3.5.1、reactor-kotlin-extensions 1.2.2 の成果物が変更されないままバージョン 2022.0.7 に再調整されている。このリリースに関する詳細は、変更履歴に記載されている。

JobRunr

JobRunrとJobRunr Pro 6.2.0のリリースでは、WindowsプラットフォームのJobRunrの重要なバグフィックス、パフォーマンスの向上、Spring Boot 3.0 と Quarkus 3.0 をサポートするための依存関係のアップグレードが行われた。このリリースの詳細は、リリースノートに記載されている。

JDKMon

インストールされたJDKを監視し、アップデートするツールであるJDKMonのバージョン17.0.5717.0.5517.0.53が2023年5月から提供されている。AzulのプリンシパルエンジニアであるGerrit Grunwaldによって作成されたこれらの新バージョンは、以下のような変更点を提供する。 CVE検出がCVSS 2CVSS 3に対応、OpenJDKのビルドのダウンロードダイアログが標準Cライブラリ(libc)の選択に対応(例:musl libc)、アプリケーションインストーラを構築するLinuxスクリプトの修正、AArch64アーキテクチャ用のLinux RPMビルドの追加である。

Devoxx United Kingdom

Devoxx United Kingdom氏は2023年5月、イギリス・ロンドンのBusiness Design Centreで開催され、Javaコミュニティからのスピーカーが以下のようなトピックで講演を行った。 Java、クラウド、データ、AI、機械学習、ロボティクス、プログラミング言語、セキュリティ、アーキテクチャ、開発者プラクティス、文化などのトピックについて、Javaコミュニティのスピーカーが講演した。

作者について

この記事に星をつける

おすすめ度
スタイル

BT