2022年4月4日、今週のJavaラウンドアップは、OpenJDK、JEP 425、JDK 19、Project Loom Build 19-loom+5-429、Jakarta EE Starterユーティリティ、Springのマイルストンおよびポイントリリース、Spring4Shellに関するPayaraとJetBrainsの声明、JReleaser 1.0、Helidon 2.5.0、JHipster 7.8.1、Hibernate Search 6.1.4、JDKMon 17.0.24、という内容でお届けする。
OpenJDK
JEP 425 "Virtual Threads (Preview)"が、JEP Draft 8277131からCandidateステータスに昇格した。このJEPは、ハイスループットな並行アプリケーションの開発、維持、監視に必要な労力を大幅に削減する軽量スレッドの"仮想スレッド(Virtual Thread)"を、Javaプラットフォームに導入するものだ。
JEP Draft 8284289 "Improved Way of Obtaining Call Traces Asynchronously for Profiling"(機能JEP)では、Javaおよびネイティブのフレーム上の情報を使用したシグナルハンドラから、非同期呼び出しのトレースを取得するための効率的なAPIを定義する。
JEP Draft 8284453 "Optionally Record Thread Context in JFR"(機能JEP)は、既存の標準JFRスタックトレースやスレッドID、時間イベントに対して、関連するイベントのユーザ定義コンテキストをアタッチする機能の追加を提案するものだ。
JDK 19
OracleでJava Platform Groupのチーフアーキテクトを務めるMark Reinhold氏が、次のようなJDK 19のリリーススケジュールを提案している。
- 2022/6/9: ランプダウン・フェーズ1
- 2022/6/21: ランプダウン・フェーズ2
- 2022/8/11: 最初のリリース候補
- 2022/8/25: 最終リリース候補
- 2022/9/20: 一般公開
この提案には、2022年4月13日に確定するまで、意見募集が続けられる予定である。現時点でJDK 19をターゲットとしている新機能は、JEP 422 "Linux/RISC-V Port"のみとなっている。
JDK 19 早期アクセスビルドのBuild 17が先週公開された。Build 16以降、さまざまなイシュー修正を含むアップデートが実施されている。詳細はリリースノートで確認して頂きたい。
JDK 19に関しては、開発者からのバグ報告をJava Bug Database経由で募っている。
Project Loom
Project Loom Build 19-loom+5-429 早期アクセスビルドが、Javaコミュニティに向けて公開された。JDK 19早期アクセスビルドのBuild 16を使用する。最新リリースでは、ForkJoinPool
クラスがアップデートされたことに伴い、メッセージパッシングなどのパフォーマンスが改善されている、
Jakarta EE Starter
Jakarta EE AmbassadorsがJakarta Starterというユーティリティを発表した。簡単なJakarta EEマイクロサービスプロジェクトを構築するためのサンプルコードを生成する、Maven Archetypeである。テストはJDK 8、JDK 11、JDK 17を使用して行われている。実行にはMaven 3以降が必要となる。
Spring Framework
Spring Cloud 2022.0.0 (コードネーム: Kikburn)に向けた2回目のマイルストンリリースが公開された。多数の改善やバグ修正の他、Spring Cloud Stream、Spring Cloud Config、Spring Cloud Kubernetes、Spring Cloud Contract、Spring Cloud Gateway、Spring Cloud Function、Spring Cloud Commonsなどのサブプロジェクトがアップグレードされている。ただし、重大な変更も含まれている。このSpring Cloud 2022.0.0-M2は、Spring Boot 3.0.0-M2に対応する。リリースの詳細については、リリースノートを参照して頂きたい。
Spring Cloud Data Flow 2.9.4がリリースされた。CVE-2022-22965 — 別名"Spring4Shell"と、CVE-2021-29425に対処している。使用するSpring Bootも、2.5.12にアップグレードされた。本リリースに関する詳細はリリースノートを参照して頂きたい。
Spring4Shell脆弱性に関するベンダの声明
Payara Platformに関するPayaraの声明
2022年3月にSpring Java Frameworkに発見されたRemote Code Execution (RCE)脆弱性(コード: CVE-2022-22965)は、Payara Platformで使用しているRCEには影響を与えないと考えられます。
しかしながら、Spring Framework WARにパッキングしたアプリケーションをPayara Serverにデプロイしているユーザは、Apache TomcatからブランチしたServlet実装を起源とするCatalinaの中で、コードの一部をPayara Serverと共有することにより、今回の脆弱性の影響を受けることになります。
この脆弱性による影響のリスクを回避するため、当社では、該当するCatalinaモジュール内で影響を受けるコードを事実上無効にする、緊急フィックスを実装しました。まもなくリリースされるPayara Community (5.2022.2)とPayara Enterprise (5.38)の両方に、このホットフィックスが含まれる予定です。
JetBrainsの同社製品に関する声明
当社はプロダクトチームと共同で、YouTrack、Hub、TeamCity、Space、Dataloreなどのプロダクト、およびJetBrains Website、JetBrains Accountなどのサービスを対象に、JetBrains Webアプリケーションの監査を実施しました。
その結果、上記のアプリケーションの中に脆弱性を持つバージョンのSpringを使用しているものはなく、既知の攻撃対象基準に合致するものもありませんでした。従って、発見されたセキュリティ問題による影響はありません。TeamCity, Hub, YouTrackに関する技術的な検証については、以下をご覧ください。
JReleaser
最初のバージョン 0.1.0リリースから1周年を迎えたJReleaserが、待望のバージョン1.0を新機能満載で公開した。リリースのダウンロードURLに基づいたフォーマット機能の追加、appName
およびappVersion
プロパティ用の名前付きテンプレート、テンプレートファイルをスキップするオプション、Chocolateryに関するバージョンスキームの問題を解決するためのpackageVersion
プロパティの追加、などがおもな内容だ。
このリリースに関する詳細はchangelogや、JReleaserの開発者であるAndres Almiray氏とのQ&Aの他、InfoQのニュースストーリでも紹介している。
Helidon
OracleがHelidon 2.5.0をリリースした。Oracle Cloud Infrastructure (OCI) Java SDKサポートの強化、JAX-RS実装の改善による@Path
アノテーションののサポート、多数のバグ修正と依存関係のアップグレードがその内容だ。本リリースに関する詳細はリリースノートを参照して頂きたい。
JHipster
バージョン 7.8.0のリリースから1週間、JHipsterのバージョン 7.8.1がリリースされた。多数のライブラリのアップグレード、CVE-2022-24815(Reactive SQLバックエンドを持つアプリケーション生成時のSQLインジェクション)への対応修正などが含まれている。詳細はchangelogに記載されている。
Hibernate
Hibernate Search 6.1.4.Finalがリリースされた。Hibernate ORM 6.0.0.FinalとHibernate Commons Annotations 6.0.0.Finalの-orm6
アーティファクトへのアップグレード、Luceneバックエンドを使ってSearchSort
インターフェースの単一インスタンスを複数のクエリで使用することによるサイドエフェクトの排除、Elasticsearchバックエンドで動的フィールドのソートがインデックスされない問題の修正、などがその内容だ。
Kotlin
JetBrainsがKotlin 1.6.20をリリースした。Kotlin/JVMにおけるコンテキスト依存の宣言定義のサポート、ジェネリックJavaクラスおよびインターフェースとの互換性の向上、JVM IRバックエンドで単一モジュールを並行コンパイルすることによるビルド時間の短縮、Kotlin/JS IRでのインクリメンタルコンパイルによる開発エクスペリエンスの合理化促進、Kotlin/Nativeのパフォーマンス向上、マルチプラットフォームプロジェクトにおける階層構造によるコード共有の促進、などが含まれている。今回のリリースに関する詳細は、InfoQのニュースストーリで紹介している。
JDKMon
インストール済JDKの監視とアップデートを行う新ツールであるJDKMonの最新バージョンが、Javaコミュニティに向けて公開された。AzulのプリンシパルエンジニアであるGerrit Grunwald氏が開発したバージョン 17.0.24には、JDKMonのLinuxバージョンに関連する修正、CVEのインジケータの置き換え、などが含まれている。OpenJDKビルドのUbuntu版は検出されるが、Disco APIのアップデートはサポートされていない。