今週、2022年5月9日のJavaラウンドアップでは、OpenJDKの最新情報、JDK 19をターゲットとする一連のJEP、Project Lilliputのマイルストンリリース、Spring Framework 5.3.20と5.2.22、Open Liberty 22.0.0.5と22.0.0.6-beta、Quarkus 2.9.0.Final、Apache Camel Quarkus 2.9.0、WildFly Preview 27 Alpha1、Hibernate Search 6.1.5、JobRunr 5.1.1、Piranha 22.5.0、Failsafe 3.2.4、Microautサーベイの結果、Devoxx UKといった内容をお届けする。
OpenJDK
OracleのJava Platform Groupでチーフアーキテクトを務めるMark Reinhold氏が、現在のopenjdk.java.net
ドメインからopenjdk.org
への移行を提案している。現行のドメインは、Javaコミュニティには十分に行き渡っている反面、一部で混乱も招いている、とReinhold氏は言う。OpenJDKオープンソースコミュニティの多くが自身のインフラストラクチャを.org
トップレベルドメイン配下に構築しているので、この移行は有益だ、というのがReinhold氏の意見だ。
通常よりも1週間延長されたレビュー期間を終えたJEP 427 "Pattern Matching for switch (Third Preview)"が、JDK 19のProposed to TargetからTargetedへの昇格を果たした。Project Amberが支援するこのJEPは、JEP 406 "Pattern Matching for switch (Preview)" (JDK 17で提供)、JEP 420 "Pattern Matching for switch (Second Preview)" (JDK 18で提供)という、過去2回のプレビュー版で得られたフィードバックを反映したもので、JEP 420に対して、switch
ブロックのガード付きパターンのwhen
句への置き換え、
セレクタ式がnull
の場合におけるパターンswitchの実行時セマンティクスと従来のswitchセマンティクスとの整合性の向上、などが変更されている。
1週間にわたるレビューを終えたJEP 424 "Foreign Function & Memory API (Preview)"が、JDK 19のProposed to TargetからTargetedに昇格した。Project Panamaが支援するこのJEPは、JDK 18で導入されたJEP 419 "Foreign Function & Memory API (Second Incubator)"、JDK 17で導入されたJEP412 "Foreign Function & Memory API (Incubator)"を発展させたもので、Javaコミュニティからのフィードバックに基づいた改善が施されている。
当初"Record Patterns & Array Patterns (Preview)"という名称であったJEP 405 "Record Patterns (Preview)"が、JDK 19のCandidateからProposed to Targetに昇格した。前項と同じProject Amberの傘下にあるこのJEPは、レコード値を分解するレコードパターンによる言語の拡張を提案するものだ。レコードパターンは、型パターン(type patterns)と併用することにより、"パワフルで宣言的、かつ構成可能なデータナビゲーションとプロセッシングを可能に"する。型パターンは、先頃のJEP 406 "Pattern Matching for switch (Preview)"(JDK 17で提供)とJEP 420 "a10>Pattern Matching for switch (Second Preview)"(JDK 18で提供)を通じて、switch
のcaseラベルとして使用できるように拡張されている。レビューは2022年5月19日に完了する予定である。
JDK 19
JDK 19早期アクセスビルドのBuild 22が先週公開された。さまざまなイシューの修正を含むアップデートが実施されている。詳細はリリースノートで確認して頂きたい。
JDK 19に関する開発者からのバグ報告を、Java Bug Database経由で募集している。
Project Lilliput
Red HatでJavaプラットフォームを担当する、シニアプリンシパルソフトウェアエンジニアのRoman Kennke氏が発案し、オブジェクトヘッダを64bitに削減することを目標として掲げるProject Lilliputが、最初のマイルストンに到達した。
Spring Framework
Spring Frameworkバージョン5.3.20と5.2.22がリリースされた。CVE-2022-22970 "Spring Framework DoS via Data Binding to MultipartFile or Servlet Part"と、CVE-2022-22971 "Spring Framework DoS with STOMP over WebSocket"のフィックスを提供する。いずれのバージョンも、CachedIntrospectionResults
クラスによってリファインされたプロパティインスペクション機能を合わせてフィーチャーしている。
Spring Framework 6.0.0に向けた4回目のマイルストンリリースが公開された。バージョン5.3.20のすべてのフィックスに加えて、廃止予定であったNestedIOException
クラスの削除、Java enum
以外の方法でHTTPステータスコードが使用可能なHttpStatusCode
インターフェースの導入、Jakarta Concurrency 3.0のサポートなど、39件の修正と改善が含まれる。
Open Liberty
IBMは、同社のOpen Liberty 22.0.0.5をベータ版から正式提供版に昇格させた。sslProtocol
属性でのSSL/TLSプロトコル値の複数設定サポート、ws-schemagen.jar
を起動する新しいコマンドラインユーティリティschemaaGen
導入に加えて、複数のバグが修正されている。
Open Liberty 22.0.0.6-betaも同時にリリースされた。スタックトレースを単一のログイベントにマージするなど、新しいログ機能が提供される。
Quarkus
Red HatがQuarkus 2.9.0.Finalをリリースした。パスワードの代替となる新しいWebAuthn認証メカニズム、Reactive RoutesとRESTEasy Reactiveでの圧縮のサポート、Confluent Schema Registryと柔軟性向上を目的に再構築されたスキーマレジストリエクステンションのサポート、Kotlin 1.6.20とScala 2.13への依存関係アップグレードなどが同梱される。アップグレードを行う開発者には、マイグレーションガイドに従うように推奨されている。
Apache Camel Quarkus
Quarkusとの同期を維持するため、Apache Software Foundationは、Camel 3.16.0とQuarkus 2.9.0.Finalを含むCamel Quarkus 2.9.0をリリースした。JBangのサポート強化、Camel Mainアプリケーションのサポート改善によるCamelルートやコンフィギュレーションクラス、タイプコンバータ、その他依存性注入(dependency injection)を使用するクラスの自動検出の容易化、Vault/Secretsクラウドサービスからのプロパティ値取得などが新機能として含まれている。
WildFly
Red HatはWildFly Preview 27 Alpha1を、Jakarta EE 10サポートに向けたマイルストンリリースとして提供中だ。Context and Dependency Injection(CDI) 4.0仕様、CDI Lite、Hibernate 6.0などをサポートする。今回のリリースはJDK 11およびJDK 17上で動作するが、JDK 8のサポートは終了している。
Hibernate
Hibernate Search 6.1.5.Finalがリリースされた。Hibernate ORM 5.6.8.Final、Hibernate ORM 6.0.1.Final (-orm6
)、Jakarta EE最新バージョン(-orm6
/-jakarta
)へのアップグレードがフィーチャーされている。また、今回のリリースでは、simpleQueryString
定義時に.flags(Collections.emptySet())
で全フラグが無効化されるようになった他、テキストフィールド上で.maxTermCount(<very large value>)
を使用して集計を定義した時にLucenceバックエンドでOutOfMemoryError
が発生する、outbox-polling
調整戦略において特定エンティティのインデックス生成を防止するルーティングブリッジがNullPointerException
を発生させる、といった問題が修正された。
JobRunr
Javaでバックグラウンド処理を実行するユーティリティJobRunrの創始者で、中心的開発者でもあるRonald Dehuysser氏が、バージョン5.1.1をリリースした。、org.jobrunr.database.skip-create
プロパティをfalse
にした場合のClosedFileSystemException
が修正されている。
Piranha
Piranha 22.5.0がリリースされた。2022年5月付"コード消臭(Getting rid of some code smells)"エディションと称する今回のリリースでは、不安定なMojarraテストの削除や依存関係のアップデートに加えて、多数の"コード臭"が修正されている。リリースの詳細はドキュメントやイシュートラッカで確認が可能だ。
Failsafe
Java 8以降を対象とする、依存性を持たない軽量な障害処理ライブラリであるFailsafeが、スレッド安全性チェックを加えたバージョン3.2.4をリリースした。リリースの詳細はchangelogに記載されている。
Micronaut
総計650票に基いたMicronaut 4.0 JDKバージョンサーベイの結果から、約2倍のJava開発者が、JDK11よりもJDK 17ベースのMicronaut 4.0を望んでいることが明らかになった。
Devoxx UK Conference
Devoxx United Kingdomが先週、英国ロンドンのBusiness Design Centreで開催され、Javaコミュニティから多くの講演者が参加して、講演やワークショップを実施した。