JVMLSに行ってきたので、そこで新しく出てきたことだけを紹介します。
JVM Language Summit は、現在開発中の OpenJDK の機能について2.5日に濃縮して知れる一年に一回しかない機会です。 これらは、数年後にリリースされるでしょう。 これらの新しい機能について、そのコンセプトや、どのように実現するかを話されます。
場所や時期についてはこちらを参照ください。 JVM Language Summit 2023と OpenJDK Comitters' Workshop に参加してきました - #chiroito ’s blog
2024年の今回は、以下について話がありました。
- Babylon
- Leyden
- Valhalla
- GC
- Lilliput
- Integrity
- Loom
これらについて何が話されたか簡単に紹介します。詳しくは後日公開される動画を確認してください。 現地で聞いた時のメモだけを頼りにこれを書いているため、間違っているかも知れませんがご了承下さい。 後日動画が公開されたら再度確認して修正します。
Babylon
BabylonプロジェクトはJavaのアプリケーションをJava言語とそれが動くCPU以外の場所(SQLやCUDA、GPGPUなど)で動かせるようにすることを目的としてます。 2023年のJVMLSで登場しました。 まだコンセプトレベルの段階です。
去年は Class File API と Code Reflection、Code Modelの紹介だけでした。 これらの中でもCode Modelはとても重要で、ASTとバイトコードの中間に新たなIntermediate representation(IR)を定義します。 去年の発表以降、いくつかの記事が公開され、Code Modelについても具体的に紹介されています。
今回、新たに Code Model Lowというものが出てきました。 Code Modelが高級言語に該当し、Code Model Lowが機械語に近いもののように見受けられました。 他にも、IntelによるSPIR-VとPHIを使ったサンプル実装が紹介されました。 SPIR-Vに対応した Code Model を実装してみたようです。
Babylonの最新情報は、以下にあります。
記事がたくさんありますので、興味のある方はごらんください。
Leyden
Leyden プロジェクトは、Javaのアプリケーションの起動速度を短縮することを目的としています。 今回の発表では、さまざまなアプリケーションの起動速度が 1/3 程度になったと発表されました。
現在Leydenは、JVMの起動時にアプリケーションのクラスをロードおよびリンクされた状態で即座に利用できるようにすることで、起動時間を改善する試みをしているようです。
詳しくはこちらのJEPをご確認ください。
- JEP 483: Ahead-of-Time Class Loading & Linking
- JEP draft: Ahead-of-Time Method Profiling
- JEP draft: Ahead-of-Time Code Compilation
Leydenの最新情報はこちらから確認できます。
LeydenのEarly-Access Buildsはこちらで入手できます。
Leydenの使い方や、ベンチマークの結果はこちらにあります。
Valhalla
Valhallaプロジェクトは、オブジェクト指向プログラミングの抽象化を維持しつつ、プリミティブの性能特性をオブジェクトに組み込むことを目的としています。 これは、Javaオブジェクトモデルに Value Object を導入することで実現します。
今回は、かなりたくさんのことが発表されました。
もっとも大きな事は、変数やメソッドの戻り値がNullを許容するかどうかを指定できるようになることでしょう。
これは、Null-Restricted and Nullable Types と呼ばれます。
Nullを許容しないのは、型の後ろに!
を付けます(String!
)。
Nullを許容するには、型の後ろに?
を付けます(String?
)。
他にも、プリミティブ型を参照型のように使えるようにする Enhanced Primitive Boxing も発表されました。
詳しくはこちらのJEPをごらんください。
- JEP draft: Null-Restricted and Nullable Types (Preview)
- JEP 402: Enhanced Primitive Boxing (Preview)
- JEP draft: Null-Restricted Value Class Types (Preview)
ほかにも、以下の論文が紹介されていました。
The Saga of the Parametric VM
ほかにもGC、Lilliput、Integrity、Loomなどがありましたが、これらについては、次回紹介します。