原文はこちら。
The original article was written by David Delabassee (DevRel – Java Platform Group at Oracle).
https://inside.java/2022/05/16/quality-heads-up/
OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDK Early Accessビルドを使ってのFOSSプロジェクトのテストを推進しています。
Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。
JDK 19 – Virtual Threads Testing!
https://mail.openjdk.java.net/pipermail/quality-discuss/2022-May/001089.html
このプログラムの詳細と参加方法については、上記wikiをご覧ください。
JEP 425 Virtual Threads (preview) Testing
Project Loomの目標は、Javaプラットフォームに、使いやすく高スループットの軽量並行処理モデル、および関連する新しい並行処理プログラミングモデルを導入することです。
Project Loomで開発されたJEP 425では、Javaプラットフォームに仮想スレッド(virtual threads)を導入します。
JEP 425: Virtual Threads (Preview)
https://openjdk.java.net/jeps/425
仮想スレッドは軽量なスレッドで、高スループットの並行アプリケーションを記述、維持、監視が非常に簡単になります。JEP 425は現在、OpenJDKのメインラインに統合されており、JDK 19 Early-Access builds 22からJDK 19で仮想スレッド(プレビュー)のサポートが利用できるようになっています。
Project Loomがますます身近になりました。
Call to Action
すでに多くのテストが行われていますが、開発者の皆さんには、すぐに仮想スレッドを使用するつもりがなくても、最新のJDK 19 Early-Access buildsでプログラムをテストすることをお勧めします。
プログラムのテストには、2つのアプローチがあります。
- 仮想スレッドを使用するようにコードを更新する
または
- プレビュー機能を有効にした上で、既存の変更されていないコードをテストする
です。どちらのアプローチでも貴重なフィードバックを得られると思っております。
既存のコードベースを仮想スレッドを使用するように変更するというのは、プラットフォームスレッドの代わりに仮想スレッドを使用するようにコードを更新するだけではありません。追加の考慮事項があるからです。
Thread (Java SE 19 & JDK 19 [build 22])
https://download.java.net/java/early_access/jdk19/docs/api/java.base/java/lang/Thread.html#virtual-threads
例えば以下のような考慮事項があります。
- 仮想スレッドをプールしてはいけない
Do not pool virtual threads
https://openjdk.java.net/jeps/425#Do-not-pool-virtual-threads - ThreadLocalに大きく依存するコードは、各タスク用に新しいスレッドが存在する世界に移行するための作業が必要
Thread-local variables
https://openjdk.java.net/jeps/425#Thread-local-variables
また、いくつかの細かい動作の変更やThreadGroup
のデグレードを考えると、既存のプログラムをそのまま、つまり仮想スレッドを使用せず、実行時にプレビュー機能を有効にしてテストすることも有用と考えています。詳しくは、JEP 425 – Risks and Assumptionsをご覧ください。
Risks and Assumptions
https://openjdk.java.net/jeps/425#Risks-and-Assumptions
Project Loomで公開したEAビルドと最新のJDK 19 EAビルドとの違いの1つは、新しいAPIを使用するために実行時に--enable-preview
フラグが必要という点です。コアリフレクションとともにAPIを使用して、--enable-preview
を使わなくて済むようにすることはできません。
最後に、いくつかのツール、特にJVMTIエージェントに依存するツールは、仮想スレッドの完全な準備ができていない可能性があります。
フィードバックは、loom-devメーリングリストにお寄せください。
The loom-dev Archives
https://mail.openjdk.java.net/pipermail/loom-dev/
Resources
- JEP 425: Virtual Threads (Preview)
https://openjdk.java.net/jeps/425 - JDK 19 Early-Access Builds
https://jdk.java.net/19/
JDK 19 Early-Access JavaDoc
https://download.java.net/java/early_access/jdk19/docs/api/index.html - Project Loom wiki
https://wiki.openjdk.java.net/display/loom/Main - Modern, Scalable Concurrency for the Java Platform
https://inside.java/2021/10/13/devlive-loom/ - Virtual Thread Deep Dive – Inside Java Newscast
https://inside.java/2022/04/07/insidejava-newscast-023/ - Inside JavaにあるLoom関連の記事
https://inside.java/tag/loom