IBM JDK 7が公開されています。Linux版、AIX版、そしてメインフレーム(z/OS)版がダウンロード可能になっています。残念ながらWindows版のIBM JDK 7の公開はありません。
-
developerWorks : IBM developer kits
-
IBM SDK Java Technology Edition バージョン 7 (マニュアル)
新機能は下記の文章に解説があります。ちょっと長いですがWhat's newのところを引用します。
-
IBM IBM SDK Java Technology Edition Version 7 - JapanWhat's New
This version contains many new enhancements and features, including:
Project Coin (JSR 334) language enhancement features, for example: strings in switch, diamond operator, and automatic resource management.
NIO.2 (JSR 203) asynchronous I/O capabilities, extended file system attributes, and file system notifications.
New java.util.concurrent capabilities using a new fork/join framework.
New balanced Garbage Collection (GC) policy targeting short and consistent pause times on large heaps.
New, more detailed and efficient format for verbose GC.
Significant diagnostic improvements, including enhancements to javacore.txt contents (ulimits, native stacks, and native memory use).
Improvements to trace capabilities that enable Java stack traces to be captured at any tracepoint. Enhanced error logging to operating system logs, for example: syslog on Linux.
Improved shared classes cache support, for example: additional content, better diagnostics for corrupted caches, a programmable interface to find and destroy caches, better control of persistent cache file permissions, and more control over displaying the cache contents.
当然ですがJDK 7の新機能である非同期IOのNIO.2 (JSR 203)やFOR文の拡張など小さな改善の集合であるProject Coin (JSR 334)などが使用可能になっています。
上記サマリーに記載はありませんが、JDBCも
4.1になっているはずです。
GC(ガベージコレクション)の改善も大きなポイントですね。以下のような記述があります。
The default GC policy is now the Generational Concurrent Garbage Collection Policy (-Xgcpolicy:gencon).
このgenconが具体的にどういう処理をするかは、
マニュアルに記載があります。該当部分を引用すると、以下の通りです。
ヒープ・サイズが 4 GB を超える環境を対象とした、新しいガーベッジ・コレクション・ポリシーが使用可能になりました。このポリシーはバランス・ガーベッジ・コレクション・ポリシーと呼ばれ、最小の処理負荷で最大のメモリー容量が得られるヒープ領域を目標とすることにより、ガーベッジ・コレクションにハイブリッド・アプローチを使用します。ポリシーは、割り振りと存続率をマッチングすることにより、グローバル・コレクションを回避しようとします。ポリシーは、マーク、スイープ、コンパクト、および世代別形式のガーベッジ・コレクションを使用します。このポリシーについて詳しくは、バランス・ガーベッジ・コレクション・ポリシーを参照してください。
つまり、GCのアルゴリズムを組み合わせ、巨大なヒープを使用する場合でもGC時による停止時間を最小にするようにバランスを取るという事のようです。
また、評価用という名目ですが(つまり本番用途には推奨されないのですが)、上記GCとは全く異なるリアルタイムGC "Metronome"が実装されたようです。ただし下記引用に記述されているようにIBM JDK 7単体では使用できず、WebSphere Real Timeといっしょに使う場合のみ許可されるようですね。
Metronome, a real-time, incremental GC policy (-Xgcpolicy:metronome) is included with the IBM SDK for Java 7 for evaluation purposes. Although this policy is not supported under the Java 7 license agreement, support is available through WebSphere Real Time.
WebSphere Real Timeは以下にあるようにリアルタイムJava環境です。
-
WebSphere Real Time:製品概要
つまり、この"Metronome GC"は、リアルタイムJavaで使うために開発されたリアルタイムGCです。
-
IBM Research | Metronome GCThe goal of the Metronome project is to produce a garbage collector with pause times that are as low as operating system context-switch times in the worst case while providing highly uniform CPU utilization, low memory overhead, and low garbage collection cost.
上記には「Metronomeプロジェクトのゴールは、停止時間を最悪でもOSのコンテキストスイッチと同程度まで小さくしながら、一方でCPU使用時間を延ばし、メモリオーバーヘッドを小さくし、低いコストでGCを実行できるガベージコレクターを提供することです」と書かれています。
理論上GCの時間がゼロになることはあり得ませんが、それがOSのコンテキストスイッチと同程度まで小さくなれば、GCの停止時間を考える必要は無さそうです。これは楽しみな技術ですね。
Metronome GCに興味が出た方向けには、ちょっと古いですが下記記事が参考になると思います。(概要の紹介なので、Metronome GC の具体的なアルゴリズムまでは解説されていません)
-
リアルタイム Java、第 4 回: リアルタイム・ガーベッジ・コレクション