今週、2022年4月11日のJavaラウンドアップでは、OpenJDK、JEP 426、JDK 19、Jakarta EE 10の最新情報、Spring FrameworkのポイントリリースとCVE-2022-22968、Quarkus 2.8.0、Open Liberty 22.0.0.4および22.0.0.5-beta、Micronaut 3.4.2、WildFly 26.1、Eclipse GlassFish 7.0-M4、Piranha 22.4.0、Apache Camel Quarkus 2.8.0、IntelliJ IDEA 2022.1、Ktor 2.0、Devnexus 2022カンファレンスのニュースをお届けする。
OpenJDK
JEP 426 "Vector API (Fourth Incubator)"がドラフト(JEP Draft 8280173)から"Candidate"ステータスに昇格した。Project Panamaが進めるこのJEPは、JEP 417 "Vector API (Third Incubator)"(JDK 18にて提供)、JEP 414 "Vector API (Second Incubator)"(JDK 17にて提供)、およびJDK 16でインキュベータモジュールとして提供されたJEP 338 "Vector API (Incubator)"という、過去3回のインキュベーションで得られたフィードバックを反映した改良を加えたもので、JEP 424 "Foreign Function & Memory API (Preview)"が定義するMemorySegment
に対して、ベクタをロードおよびストアするためのVector APIを拡張するように提案している。
JDK 19
JDK 19 早期アクセスビルドのBuild 18が先週公開された。Build 18以降、さまざまなイシュー修正を含むアップデートが実施されている。詳細はリリースノートで確認して頂きたい。
JDK 19に関しては、開発者からのバグ報告をJava Bug Database経由で募っている。
Jakarta EE 10
Jakarta EE 10に向かって、Eclipse FoundationのJakarta EEデベロッパアドボケートであるIvar Grimstad氏が、自身のブログ "Hashtag Jakarta EE weekly" の中で、4つの追加機能に関するリリースレビューが先週完了したことを報告した。これにより、Platform Profileに含まれるように定義された仕様の約半数が、Jakarta EE 10に向けて準備完了したことになる。
- Jakarta Persistence 3.1
- Jakarta RESTful Web Services 3.1
- Jakarta XML Binding 4.0
- Jakarta XML Web Services 4.0
- Jakarta Activation 2.1
- Jakarta Annotations 2.1
- Jakarta Batch 2.1
- Jakarta Interceptors 2.1
- Jakarta JSON Binding 3.0
- Jakarta JSON Processing 2.1
- Jakarta Mail 2.1
- Jakarta SOAP with Attachments 3.0
"Jakarta Context and Dependency Injection 4.0"のレビューは現在継続中で、2022年4月20日の完了が予定されている。その他の仕様は互換性検証要求待ちで、TCKテストのさまざまな段階にあるが、2022年5月末にJakarta EE 10を提供するために、今後3週間以内にリリースレビューを完了する必要がある。
Spring Framework
VMwareは、WebDataBinder
クラスのdisallowedFields
設定プロパティに対する保護の欠如が明らかになったCVE-2022-22965 "Spring Framework RCE via Data Binding on JDK 9+" のフォローアップとして、CVE-2022-22968 "Spring Framework Data Binding Rules Vulnerability"を発表した。この修正は2022年4月21日にリリース予定のSpring Bootバージョン 2.6.7および2.5.13にも含まれるが、開発者に対しては、Spring BootアプリケーションのSpring Frameworkを手作業でアップグレードするように呼び掛けている。
Spring Framework 5.3.19および5.2.21がリリースされた。それぞれ12件と5件のバグ修正および改良が含まれている。両バージョンとも、前述したCVE-2022-22968脆弱性にも対処する。
Quarkus
Quarkus 2.8.0.Finalがリリースされた。デフォルトRESTレイヤとしてのRESTEasy Reactive、デフォルトバージョンとしてのGraalVM 22.0、新しくなったQuarkusTransaction
API、Elasticsearchコンテナをdev
モードおよびtest
モードで自動で起動可能なElastic Dev Serviceなどをフィーチャーしている。なお、バイナリ互換性の問題により、Quarkus BOMからAssertJが削除されたため、使用する場合にはアプリケーション内で明示的にAssertJ 3.22.0を定義する必要がある。今回のリリースに関する詳細は、changelogに記載されている。
InfoQでは、より詳細なニュースを追ってお伝えする予定である。
Open Liberty
IBMは、Open Liberty 22.0.0.4をベータリリースから配布バージョンに昇格させた。JDK 18のサポート、URLエンコード文字列によるクライアント認証のサポート、Paketo Liberty Buildpackの導入に加えて、多数のバグが修正されている。
Open Liberty 22.0.0.5-betaも合わせてリリースされた。こちらはMicroProfile GraphQL 2.0のサポートに加えて、複数のLibertyサーバがJCache
経由でキャッシュを共有可能な分散型セキュリテイキャッシュを備える。
Micronaut
Micronaut FoundationがMicronaut 3.4.2をリリースした。バグ修正やドキュメントの改善に加えて、Micronaut AWS 3.2.3、Micronaut Email 1.2.1、Micronaut AOT 1.0.3、Micronaut Micrometer 4.2.1、Netty 4.1.76へのアップグレードが含まれる。リリースの詳細はchagelogで確認できる。
WildFly
WildFly 26.1 Beta1の公開から3週間、Red Hatは、WildFly 26.1を正式にリリースした。JDK 8、JDK 11、JDK 17の各LTSリリースのサポート、MicroProfile Configによるルートコンフィギュレーションソースディレクトリの指定機能、削除マークされたキューが実際に削除される頻度を設定するaddress_queue_scan
属性の新設、JDBCストア経由で取り出されるレコード数を制限するexecution-records-limit
属性の新設、リソースアダプタ検証ログディレクトリの設定を可能にする機能などが含まれる。リリースの詳細については、WildFly 26.1のドキュメントを参照して頂きたい。
Eclipse GlassFish
GlassFish 7.0に向けた4番目のマイルストンリリースが、Eclipse Foundationから発表された。各仕様のTCKをパスしたJakarta Servlet 6.0とJakarta Server Pages 3.1の実装と、アップデートされたJakarta EE 10コンポーネントが提供される。GlassFish 7.0.0-M4はベータリリースとしての扱いで、JDK 11~JDK 18によるコンパイルと実行が可能だ。このリリースに関する詳細は、リリースノートを参照して頂きたい。
Piranha
Piranha 22.4.0がリリースされた。2022年4月の"Slowing the pace"版と銘打たれた今回のリリースには、依存関係とプラグインのアップデートが含まれている。リリースの内容は関連資料とイシュートラッカで確認できる。
Apache Camel Quarkus
Quarkusとの整合性維持のため、Apacheは、Camel 3.16.0とQuarkus 2.8.0.Finalを含むCamel Quarkus 2.8.0をリリースした。Windowsサポートの改善、新たなJVMエクステンションであるazure-servicebus
とgoogle-secret-manager
、mybatis
エクステンションのネイティブサポート、spark
、ahc
、ahc-ws
各エクステンションの非推奨化、ipfs
とweka
両エクステンションの廃止、Azureエクステンションを使用するためのVert.x-ベースのAzure HTTPクライアントなどが変更点だ。このリリースの詳細については、クローズされたイシューの一覧で確認できる。
JetBrains
JetBrainsはIntelliJ IDEA 2022.1をリリースした。JDK 18のサポートに加えて、依存関係の管理とコンフリクト解決を行うDependency Analyzerと、NotificationsツールウィンドウでIDEからの通知の受信と格納を行う新たな方法が追加されている。また、New Projectウィザードがアップデートされ、新プロジェクトのローンチが改善された。Kotlin使用時のIDEのパフォーマンスも向上している。詳細はリリースノートを参照して頂きたい。
1年の開発期間を経たKtor 2.0も、JetBrainsからリリースされた。Kotlin 1.6.20のサポート、簡略化されたエクステンションAPIによって容易になったプラグイン開発、既存のGraalVMサポートを補完するKotlin/Nativeサポート、post<T>
とget<T>
メソッドの削除によってHTTPリクエストを簡略化した新API、リトライの組み込みサポートなどが提供されている。リリースの詳細はchagelogで確認できる。
これらJetBrainsのプロダクトについて、InfoQでは、さらに詳しいニュースストーリでフォローする予定だ。
Devnexus Conference
2021年の仮想カンファレンスに続いて、Atlanta Java Users Groupの主催するDevnexus 2022が先週、ジョージア州アトランタのGeorgia World Congress Centerで開催された。ワークショップとプレゼンテーション、3年目を迎えたJUG Leaders Summitから構成されるこのカンファレンスには、Javaコミュニティから多くの著名な講演者が参加している。