Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015
サンフランシスコで「JavaOne 2015」が開幕。基調講演の後半では、2018年かそれ以降になると見られるJava 10やJava 11に向けて開発中のプロジェクトが紹介されています。
最新のハードウェアに最適化されたデータ構造の実現により、実行速度の向上などが見込まれる「Project Valhalla」と「Project Panama」です。
基盤となるハードウェアやOSに適合していく
Java Platform Group Java LanguageアーキテクトBrian Goetz氏。
Java 9の先、Java 10、11を見ていこう。

JavaVMにとってハードウェアの進化は重大なことだ。JavaVMはその基盤となるハードウェアやOSに適合し続けるため、動く標的を狙い続けている。
ここではOpenJDKでそれらに関わる「Project Valhalla」と「Project Panama」を紹介する。
Project Valhallaは、データ自身によりオブジェクトのオーバーヘッドなどを取り除こうとしている。Project PanamaはネイティブコードやネイティブデータでJVMのデータセクションを最適化するものだ。

Javaが登場した頃、シングルコアシステムで小さなメモリ、パイプラインもキャッシュもなかった。いまは、マルチコア、マルチソケットで、CPUキャッシュやメモリも大量に積まれている。コア自身も洗練されてきた。
しかし、Javaのデータとメモリのレイアウトは、昔のプロセッサのモデルのまま。最新のハードウェアやOSに最適化した、よりよいメモリ効率、キャッシュ効率が求められる。
Project ValhallaとProject Panamaはこのために、OSやメモリとJVMとのやりとりを再構成するものだ。特に、メモリとキャッシュの利用効率のためにデータを緻密かつ平坦に配置する。
例えば、毎日目にするようなシンプルな、xとyからなるオブジェクトがあるとする。

これに対するポインタの配列を設定すると、オブジェクトごとのヘッダの分だけオーバーヘッドが存在するし、ポインタのヘッダの部分もオーバーヘッドだ。

Javaが登場した1995年の時点では、すべてがオブジェクトで柔軟性を持たせるために配列ポインタを使うのが望ましかった。
しかし最新のシステムでは、(CPUキャッシュのキャッシュミスのペナルティを避けるため)より純粋なデータが望ましい。
これを解決するため「Value」型を取り入れる。クラスを純粋なデータとして扱える。

するとデータの配置はこうなる。よりキャッシュフレンドリーでありメモリ効率も高い

データの高いローカリティでキャッシュ効率が高まり、プリフェッチで効率よくデータがとらえられる。
もしも超高速なコードを書かなくとも、Value型はJDKが最適化してくれる。
Big change. Projects we started a year ago are aimed at a lower target, JVM, & the operating hardware system. https://t.co/YvTYSdKryQ
— JavaOne Conference (@JavaOneConf) 2015, 10月 26
JavaOne 2015
- [速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015
- Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015
- Java20周年を祝ってJavaOneにスコット・マクニーリ氏がスペシャルメッセージ。「Javaプログラマにとって最悪な10のコト」を発表。JavaOne 2015
Oracle OpenWorld 2015
あわせて読みたい
- Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了
- 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)
- AWS、「Java 8」を2026年まで、「Java 11」は2027年まで、現行より3年サポート期間延長を発表。独自JavaディストリビューションのCorretto 8とCorretto 11で
- Java 7、Java 8、Java 11、Java 12の新元号対応アップデートが4月16日に登場予定。オラクルが発表
Java20周年を祝ってJavaOneにスコット・マクニーリ氏がスペシャルメッセージ。「Javaプログラマにとって最悪な10のコト」を発表。JavaOne 2015
≪前の記事
[速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015