さっきの投稿の補足です。OpenJDKのサイトに掲載されているJava SE 7のフィーチャーリストは以下のようになっています。
- Compressed 64bit Object Pointers
- Garbage-First GC (G1)
- JSR 292: VM support for non-Java languages (InvokeDynamic)
- JSR 308: Annotations on Java types
- JSR TBD: Small language enhancements (Project Coin)
- JSR 294: Language and VM support for modular programming
- Modularization (Project Jigsaw)
- Upgrade class-loader architecture
- Method to close a URLClassLoader
- Unicode 5.1
- Concurrency and collections updates (jsr166y)
- JSR 203: More new I/O APIs for the Java platform (NIO.2)
- SCTP (Stream Control Transmission Protocol)
- SDP (Sockets Direct Protocol)
- Elliptic-curve cryptography (ECC)
- XRender pipeline for Java 2D
- Forward-port 6u10 features
- Create new platform APIs for forward-ported 6u10 features
- JSR 296: Swing application framework
- Swing updates
- Update the XML stack
MYCOM Journalにもレポートが載ってますが、覚え書き程度に補足しておきます。12月の発表のときの情報と被る部分もありますが(当時はブログ書いてなかったので)。
Compressed 64bit Object Pointerっていうのはこの辺りで言及されていた話に関連するもので、64bit JVMを使う場合2Gや4G以上のメモリ空間を使えるわけだけれど、そうするとメモリの消費効率が悪くなる。なので64bit JVMでもアドレッシングを圧縮してその問題を回避できるようにしようということのようです。これはすでにJDK 7に実装されていて、G1-GC同様にJDK 6にもバックポートされています。
モジュラリティについてはJSR 294とProject Jigsawの2つがありますが、前者は高レベルの、後者は低レベルのモジュラリティを対象としているとのことです。以前この記事でモジュラリティサポートの経緯について少し触れたのですが、ちょうどこの記事の入稿と前後する時期にJSR 294の再度の見直しがスペックリードのAlex Buckley氏から提案されて、結果としてコンパイル時/ランタイム時双方のモジュラリティをカバーする仕組みを構築するという方向でまとまったようです。あのときReinhold氏は「新しい動きがある」と話していましたが、Jigsawだけでなくこれのことも含まれていたんですね。ちょっと誤解していました。新しいJSR 294は既存のパッケージシステムの問題を解決することを目的としていて、当初のJSR 294とJSR 277と方向性としては同じものですかね。
URLClassLoaderについてはこれもつい最近Michael McMahon氏が言及していました。URLClassLoaderでクラスをロードした場合に、JARファイルを閉じる手段が無くてオブジェクトが開放できないので、これを解決するためにclose()メソッドを付け加えたというものです。JDK 7にはb48で実装済みです。
XRender pipeline for Java 2DというのはJava 2Dのパイプライン処理にX11で提供されるXRender拡張を使えるようにするというもの。これによってGPUの性能をもっと活かせるようになるとのことです。Swing関連ではJXLayerやDataPickerが挙げられていますが、残念ながらJWebPaneについては触れられていませんね。*1
でも実は今一番気になっているのは技術的なことよりもSunの買収騒動の方ですね。政治的な話はともかくとして、Java 7の開発に影響するんじゃないかというのが。