今週2022年5月16日のJavaラウンドアップは、OpenJDKからJDK 19に関するニュース、Jakarta EE 10、SpringのマイルストンリリースとポイントリリースとCVE、May 2022 Payara Platformリリース、Quarkus 2.9.1.Final、Micronaut 3.4.4、WildFly 16.1.1、Hibernate ORM 5.6.9.Final、Hibernate Reactive 11.5.Final、JDKMon 17.0.25、JobRunr 5.1.2、JRelease早期アクセス、Apache Tomcatポイントリリース、Apache Camel 3.17.0といった内容でお届けする。
OpenJDK
2022年5月19日、1週間のレビューが終了したにも関わらず、JEP 405 "Record Patterns (Preview)"はいまだJDK 19 Proposed to Targetに留まっている。Project Amber傘下のこのJEPは、レコードパターンでレコード値を分解する言語拡張を提案している。レコードパターンは型パターン(type patterns)と併用することで、"パワフルで宣言的、かつ構成可能なデータナビゲーションと処理を可能に"する。型パターンは先日のJEP 406 "Pattern Matching for switch (Preview)"(JDK 17で提供)とJEP 420 "Pattern Matching for switch (Second Preview)"(JDK 18で提供)を通じて、switch
のcaseラベルとして使用できるように拡張されている。
JEP 428 "Structured Concurrency (Incubator)"がJEP Draft 8277129からCandidateに昇格した。Project Loomが推進するこのインキュベートJEPは、異なるスレッド内で動作する複数のタスクを単一の作業ユニットとして扱うライブラリを導入して、マルチスレッドプログラミングを単純化しようというものだ。エラー処理やキャンセルが簡略化されるため、信頼性が高まると同時に、可観測性の向上も期待できる。
JDK 19
JDK 19早期アクセスビルドのBuild 23が先週公開された。Build 22に対して、さまざまなイシュー修正を含むアップデートが実施されている。詳細はリリースノートで確認して頂きたい。
Rampdown Phase 1の目標設定日である2022年6月9日が迫る中、現時点のJDK 19機能セットは次の6つになっている。
- 405: Record Patterns (Preview) (レビュー中)
- 422: Linux/RISC-V Port
- 424: Foreign Function & Memory API (Preview)
- 425: Virtual Threads (Preview)
- 426: Vector API (Fourth Incubator)
- 427: Pattern Matching for switch (Third Preview)
開発者のバグ報告はJava Bug Databaseまで。
Jakarta EE
Jakarta EE 10に向けて、Eclipse FoundationでJakarta EEデベロッパアドボケートを務めるIvar Grimstad氏は、自身のHashtag Jakarta EE weeklyブログの中で、Jakarta EE 10 Platform仕様のリリースレビューの開始目標日を、新たに2022年6月9日とすることを発表した。この決定は、エンタープライズアプリケーションがJDK 11およびJDK 17との完全な互換性を確保できるように行われた。バージョン7.0.0-M4と次期バージョン7.0.0-M5の中間プレリリースを先日提供したEclipse GlassFishも、JDK 11 TCKパスに向けて順調に進んでいるが、JDK 17 TCKをパスするための作業が残っている。
Spring Framework
Springチームにとって先週は、Spring Boot、Spring for GraphQL、Spring Data、Spring Session、Spring Securityに関わる数々のポイントリリース、マイルストンリリース、CVEの提供などで多忙な1週間だった。
Spring Boot 2.7.0がリリースされた。Spring for GraphQL 1.0の自動コンフィギュレーションとメトリクスに加えて、CouchbaseとElasticSearch用の新たなアノテーション@DataCouchbaseTest
として@DataElasticsearchTest
が提供される。Spring Data 2021.2、Spring HATEOAS 1.5、Spring LDAP 2.4、Spring Security 5.7、Spring Session 2021.2など、依存関係もアップデートされた。詳細はリリースノートを参照して頂きたい。InfoQでは、より詳細なニュースを追ってお伝えする予定である。
Spring Boot 2.6.8がリリースされた。35件のバグ修正、ドキュメントの改善、依存関係のアップデートが内容だ。詳細はリリースノートを参照して頂きたい。
Spring Boot 2.5.14がリリースされた。29件のバグ修正、ドキュメントの改善、依存関係のアップデートが含まれる。2.5リリーストレインは今回が最後となるので、後継バージョンへのアップグレードを検討するべきだ。詳細はリリースノートを参照して頂きたい。
Spring 3.0.0に向けた第3のマイルストンリリースが公開された。Micrometer Observation、Tracing、OtlpMeterRegistry
用の自動コンフィギュレーション、REST Assuredのサポート、Pooled JMSの復活などがフィーチャーされている。詳細はリリースノートを参照して頂きたい。
最初のコミットから2年、Javaコミュニティに向けた最初の発表からは10か月、Spring for GraphQL 1.0がリリースされた。アノテーションベースのデータフェッチ用プログラミングモデル、データフェッチのためのQuerydslおよびQuery by Exampleリポジトリ、サーバの改良、HTTP、WebSocket、RSocket経由のクライアントとテスト、データ@Controller
メソッドのアノテーションによるフィールドレベルのセキュリティなどがおもな機能だ。InfoQでは、より詳細なニュースを追ってお伝えする予定である。
Spring Data 2021.2と2022.0の4回目となるマイルストンリリースが公開された。2022.0リリーストレインは、Spring Framework 6、JDK 17、Jakarta EE 9をベースとする予定だ。Spring Data 2021.2、コードネーム"Raj"には、data-mongodb
モジュール内の宣言型Update
メソッド、data-jpa
モジュールでの@IdClass
処理のサポート向上、data-elasticsearch
モジュールでの再インデクス処理のサポート、data-cassandra
モジュールのダイレクトプロジェクションなどが含まれている。詳細はリリースノートを参照して頂きたい。
Spring Data 2021.2へのアップグレードをフィーチャーしたSpring Session 2021.2がリリースされた。今回のリリースはまた、Spring Framework 6.0を基盤とする次世代Spring Sessionへのゲートウェイでもある。
CVE-2022-22978 "Authorization Bypass in RegexRequestMatcher"が発行されたが、誤ってCVE-2022-22975と記載されている。正規表現内において、RegexRequestMatcher
クラスのインスタンスを'.
'とともに使用するアプリケーションには、認証を回避される潜在的脆弱性が存在する。
CVE-2022-22976 "BCrypt Skips Salt Rounds for Work Factor of 31"も同時に発行された。整数オーバーフローエラーによってエンコーダのソルトラウンド(salt round)が実行されなくなる問題に対処する。
Spring Securityのバージョン5.7.1、5.6.5、5.5.8がリリースされた。StrictHttpFirewall
クラスのインスタンスが中国語、日本語、韓国語、ベトナム語(CJKV)の有効な文字を誤ってリジェクトするバグが修正されている。
前述のCVE-2022-22978、SVE-2022-22976の脆弱性に対処する、バージョン5.7.0、5.6.4、5.5.7も同時にリリースされている。
Spring Security 6.0.0に向けた5番目のマイルストンリリースが公開中である。注目すべき変更点は、すべてのディスパッチタイプに認証が必要になったこと、shouldFilterAllDispatchTypes
プロトタイプのデフォルトがtrue
に変更されたこと、既定のセキュリティコンテキストフィルタがSecurityContextPersistenceFilter
クラスからSecurityContextHolderFilter
クラスに変更されたこと、SAML APIで定義されていたすべての非推奨が削除されたこと、などが挙げられる。また、今回のリリースでは、StrictHttpFirewall
クラスのインスタンスが有効なCJKV文字を誤ってリジェクトする問題も修正されている。
Payara
Payaraは、同社のPayara PlatformのMay 2022エディションを、エンタープライズのみのリリースとしてリリースした。Payara Platform Enterprise 5.39.0エディションには、4つのバグ修正、2つのコンポーネントのアップグレードの他、JDK17のサポートや、Admin Console起動時にタイムアウトオプションを参照する機能などが追加されている。詳細はリリースノートを参照して頂きたい。
Quarkus
Quarkus 2.9.0のリリースから1週間後、Red HatがQuarkus 2.9.1.Finalのメンテナンスリリースの提供を開始した。機能バグやドキュメント更新の他、GraalVM 22.1、Hibernate Reactive 1.1.5.Final、Hibernate ORM 5.6.9.Final、Micrometer BOM 1.8.6、Infinispan 13.0.10.Finalといった依存関係のアップグレードが含まれる。リリースの詳細はchangelogに記載されている。
Micronaut
Mironaut FoundationがMicronaut 3.4.4をリリースした。Micronaut Maven Plugin 3.2.4、Micronaut SQL 4.2.3、Micronaut JAX-RS 3.2.1、Micronaut Oracle Cloud 2.1.3、Micronaut MQTT 2.1.1、Micronaut OpenAPI 4.0.1といったMicronautモジュールのアップデートがおもな内容だ。詳細はリリースノートを参照して頂きたい。
WildFly
WildFly 26.1のリリースから5週間、Red Hatは、そのメンテナンスリリースをバージョン26.1.1として提供した。WildFly Core 18.1.1.Final、Smallrye Config 2.10.0、Smallrye Health 3.2.1、Netty 4.1.76、RESTEasy 6.0.1.Finalなど多数のコンポーネントがアップグレードされている。詳細はリリースノートを参照して頂きたい。
Hibernate
JBossは先週、Hibernate ORMとHibernate Reactiveの最新版の提供を開始した。
5.6リリーストレインのメンテナンスリリースであるHibernate ORM 5.6.9.Finalでは、パッチと重要なバグのフィックスが提供されている。
Hibernate Reactive 1.1.5.Finalは、Stage.SessionFactory
とStage.Session
両インターフェースを使用する開発者向けの重要なバグ修正を提供している。自身のアプリケーションで"No Vert.x context active"というエラーメッセージが発生する場合も、この最新リリースにアップグレードするべきだ。
JDKMon
インストール済JDKの監視とアップデートを行う新ツールであるJDKMonの最新バージョンが、Javaコミュニティ向けに公開された。AzulのプリンシパルエンジニアであるGerrit Grunwald氏の手によるバージョン17.0.25では、Linuxバージョンに関連する修正と、新たなものに置き換えられたCVEのインジケータが提供される。
JobRunr
Javaでバックグラウンド処理を実施するユーティリティのJobRunrの創設者で、中心的開発者のRonald Dehuysser氏がバージョン5.1.2をリリースした。cron式に代えて@Recurring
アノテーションを使用するインターバルがサポートされ、MockJobContext
テストにJobContext
クラスのインスタンスの設定が可能になった。
JReleaser
JReleaser早期アクセス版の最新リリースが先週公開された。依存関係がaws-java-sdk
1.12.220、jsonschema
4.24.3、sshj
0.33.0、tika
2.4.0、mockito
4.5.1にアップグレードされている。
Apache Tomcat
今週はApache Tomcatチームにとって、9.0、10.0、10.1リリーストレインのポイントリリースが相次いだ多忙な1週間だった。
バージョン9.0.63、10.0.21、10.1.0-M5はいずれも、Kubernetesサービスバインディングから値を取得するプロパティソース、Linuxカーネルの重複受け入れバグに関する根本原因の特定、OpenSSL 1.1.1oで構築されたWindowsバイナリをサポートするためのTomcat Native Library 1.2.3への依存関係アップグレード、内部のインメモリキーストア設定時におけるPKCS#1形式秘密鍵の暗号化サポート、といった機能を備える。
Apache Tomcat 10.1.0-M15は、Apache Tomcat 10.1リリーストレインの新機能への早期アクセスを、開発者に提供することを目的としたアルファマイルストンリリースである。
Apache Camel
Apache Software FoundationがApache Camel 3.17.0をリリースした。220件のバグ修正に加えて、Spring Boot 2.6.7、 camel-jbang
に関連してKamelets 0.8.1、Google Cloud Libraries BOM 25.2.0、Jakarta Mail 1.6(Jakarta EE 8)、OSGiの再現性の問題に関連してmaven-bundle-plugin
について、改善ないし依存関係のアップグレードが行われている。今回のリリースの詳細については、リリースノートを参照して頂きたい。