原文はこちら。
The original article was written by David Delabassee (DevRel – Java Platform Group at Oracle).
https://inside.java/2022/11/14/quality-heads-up/
OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDK Early Accessビルドを使ってのFOSSプロジェクトのテストを推進しています。
Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。
JDK 20 EAb22, GenZGC EA builds, JavaFX 20 EAb5 and several heads-ups!
https://mail.openjdk.org/pipermail/quality-discuss/2022-November/001099.html
このプログラムの詳細と参加方法については、上記wikiをご覧ください。
JDK 20 – Deprecate and Disable the Legacy Parallel Class Loading Workaround for Non-parallel-capable Class Loaders
JDK 7より前のバージョンでは、非階層的なクラス委譲モデルを使用するカスタム クラス ローダーはよくデッドロックが発生していました。そこでHotSpot VM (JDK 6) では、デッドロックを回避するため、並列処理に対応していないクラスローダーに対して並列クラスロードを許可する回避策が追加されました。
Java SE 7では、並列処理可能なクラスローダーが導入されました。これは非階層的なクラス委譲モデルを使用するデッドロックのないクラスローダーを実装するために、並列処理クラスローディングをサポートするものです。
Multithreaded Custom Class Loaders in Java SE 7
https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html
Java SE 7 のマルチスレッドのカスタムクラスローダー
https://docs.oracle.com/javase/jp/7/technotes/guides/lang/cl-mt.html
このリソースでは、この回避策に依存するクラスローダーをマルチスレッドの並列処理可能なクラスローダーに移行する方法について説明します。
この回避策は、これらの開発者が新しいメカニズムに移行できるようにすることを目的としています。JDK 7は11年前にリリースされたので、デッドロックが発生しやすいカスタム・クラスローダーは並列処理可能なクラスローダーに移行されていると思われます。結果として、この回避策は、仮想スレッドのピンニングからオブジェクトモニターを排除する妨げとなるため、JDK 20で削除されました。
みなさまのコードベースがこのレガシー回避策に依存していないことを確認してください。もしまだ依存しているのであれば、至急、この回避策から移行してください。なお、この旧来の動作は、特別なフラグを使用して一時的に再有効化できます。
More Information
Multithreaded Custom Class Loaders in Java SE 7
https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html
Java SE 7 のマルチスレッドのカスタムクラスローダー
https://docs.oracle.com/javase/jp/7/technotes/guides/lang/cl-mt.html
Class Loader API Modifications for Deadlock Fix
https://openjdk.org/groups/core-libs/ClassLoaderProposal.html
[JDK-8296446] Release Note: Deprecate and Disable Legacy Parallel Class Loading Workaround for Non-Parallel-Capable Class Loaders
https://bugs.openjdk.org/browse/JDK-8296446
[JDK-8295848] Deprecate legacy parallel class loading workaround for non-parallel-capable class loaders
https://bugs.openjdk.org/browse/JDK-8295848