Day-5 : Oracle's Java Virtul Machine Strategy
Oracleの2つのJavaVM、つまりHotSpotとJRockitの
今後の戦略についてのセッション。
明らかに面白そうなセッションなのですが、開催が急遽前日に決まり
皆にきちんと周知されていなかったためか、参加者は10名という少人数でした。
私も前日深夜(当日早朝)にTwitterで知って、慌てて申し込んだのでした。
さて、内容についてですが、期待通り。
Javaは歩みが遅くなり、Java7が出てこない状況だけど、
JavaVM自体は順調に改善されている。
たとえばHotSpotは、
32GBまでのHeapOopsに対応、NUMAに対応、G1GCの導入、
文字列結合や配列コピーの改善など。
また、JRockitでは
JITの改善、HPROF heap dumpのサポート、JMX Agentの改善、
Native Memoryのトラッキング、JRockit Flight Recorder(JRFR)など。
ところで、HotSpotとJRockitの使い分けについて、
Oracleがコンサルティングする時には、以下のように勧めている。
Oracle製品以外を使う場合 : HotSpot
Oracle製品をSolaris上で使う場合 : HotSpot
Oracle製品をWindows/Linux上で使う場合 : JRockit
さて、一番気になるJRockitとHotSpotの統合について。
何度も書いている通り、現状でマーケットリーダーとなっているHotSpotに、
JRockitの機能をマージする。
ダウンロードは無償だけど、ソースコードは非公開、というのは今と同じままにする。
オープンソース版としてはOpenJDKを提供する。
たとえばJRockit Mission Control(JRMC)などはソース非公開のままにする
(かたやVisualVMはオープンソースですね)
ちなみにOracle内部ではHotRockitと呼んでいる。
JSpotは、違う感じに聞こえるので、ちょっとね(笑
統合VMは、向こう2〜3年前少しずつリリースしていく。
最初のバージョンは2011年末までにリリースし、
JRockit JMX agentとJRMCは動くものにする予定。
また、現行のHotSpot / JRockitともに、
今後数年間はメンテナンスも継続する。
統合VMに入れる機能は、
直近では、JRMC、JRFR、Virtual Edition、ゼロコピーIO、リアルタイムGC、
Native Memoryのトラッキング、GCやコンパイラを操作するAPIなど。
より将来的な話としては、
無停止で、スケーラビリティの高いJVMを目指す。
動的言語のサポートや、起動の高速化、フットプリントの削減も継続して行うう。
1つのJVM上で複数のアプリケーションを起動することも目指す。
JNIに変わる、より使いやすいネイティブ連携も検討する。
パフォーマンスの改善も行う。
G1GCやG1-lite、escape analysisの範囲拡大、Intel AVS SIMDとGPUサポートなど。
(ちょっとこの辺、知らないこと多いです)
リソースのモニタリングと管理も注目事項。
次世代のJRMCでは、診断、プロファイリング、モニタリング、管理を行う。
、、、という所で質疑応答へ。
Q) 統合VMもOpenJDKベースか?
A) ベースとなるHotSpotがOpenJDKベース(98%は同じコード)なので、そうなる。
ただしプロプライエタリな部分は増えていくし、
それをOSSにフィードバックすることは、あまり優先度が高くない。
たとえばVirtual Editionなども、OpenJDKでは実現されないだろう。
Q) JRFRの情報を読み出すAPIは提供するのか?
A) 提供する。データ形式は非公開だが、パースした結果を取得できる。
という感じで、
Oracleが統合VMに向けて、かなり力を入れているであろうことが
よく伝わって来るセッションでした。
Java7の時代には、私たちは普通に統合VMを使うことになりそうですね。