谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

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 SIMDGPUサポートなど。
(ちょっとこの辺、知らないこと多いです)


リソースのモニタリングと管理も注目事項。
次世代のJRMCでは、診断、プロファイリング、モニタリング、管理を行う。


、、、という所で質疑応答へ。


Q) 統合VMもOpenJDKベースか?
A) ベースとなるHotSpotがOpenJDKベース(98%は同じコード)なので、そうなる。


ただしプロプライエタリな部分は増えていくし、
それをOSSにフィードバックすることは、あまり優先度が高くない。
たとえばVirtual Editionなども、OpenJDKでは実現されないだろう。


Q) JRFRの情報を読み出すAPIは提供するのか?
A) 提供する。データ形式は非公開だが、パースした結果を取得できる。


という感じで、
Oracleが統合VMに向けて、かなり力を入れているであろうことが
よく伝わって来るセッションでした。


Java7の時代には、私たちは普通に統合VMを使うことになりそうですね。