Project Valhalla

Javaのオブジェクトモデルを拡張するOpenJDKプロジェクト。オブジェクト指向の抽象化とプリミティブ型のパフォーマンス特性を組み合わせることを目標とする。構文の簡潔化など軽量な言語機能を扱うProject Amberとは役割が異なる。

背景

従来のJavaでは、オブジェクトは常に参照型(ヒープに確保され、ポインタ経由でアクセスされる)だった。Project Valhallaはここに値型(value type)を導入し、プリミティブ型並みの性能(インライン化・ボクシング回避)を持つオブジェクトを作れるようにする。

JEP 401 (Value Classes and Objects)

Project Valhallaの中核となるJEP。

  • プレビュー機能として JDK 28 (2027年3月予定)でOpenJDK本流に統合される見込み(2026年6月時点)
  • 変更規模は197,000行以上、1,816ファイルに及ぶ大規模なもの
  • プレビュー機能のためデフォルトでは無効(オプトインが必要)

タイムライン

  • 現行の最新版: JDK 26
  • JDK 27: 2026年9月予定
  • JDK 28: 2027年3月予定(JEP 401プレビュー搭載見込み)

Compact Object Headersとの関係

64bitに再設計されたオブジェクトヘッダには、値型対応を見越して4bitの予約領域が確保されている。

Generic Specialization

値型の導入に合わせて、コレクションをプリミティブ値向けに特化させるgeneric specializationも構想されている。ただし現行の型消去(type erasure)による参照型ジェネリクスへの、完全なreified generics(実行時に型情報を保持する方式)の導入は、既存バイトコードとの互換性維持が難しく可能性は低いとされる。

出典

作成日時: 2026-08-09 21:16 / 更新日時: 2026-08-19 23:01