BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JDK 7 Milestone 5、並行処理とパフォーマンスに関してアップデートされたが、Feature Completeには至らず

JDK 7 Milestone 5、並行処理とパフォーマンスに関してアップデートされたが、Feature Completeには至らず

原文(投稿日:2009/11/25)へのリンク

最近、SunのJava SEチームはJDK 7 Milestone 5をリリースした。このM5リリースには、Project Coinの機能のおよそ半分、Doug Lea氏らによるjava.util.concurrentパッケージのアップデートなど、数多くの機能強化が含まれている。

Project Coinから導入された新しい言語機能には以下のようなものがある。

  1. ジェネリックス型のインスタンス生成のための型推論の改善(ダイヤモンド)。クラスのインスタンス生成時には限定的な型推論を使う。これにより、コンストラクタに型パラメータを明示的に宣言する必要のある場所でも、文脈から判断できる場合には型パラメータを空にすることができる。つまり、
    Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
    はこう書けるようになる。
    Map<String, List<String>> anagrams = new HashMap<>();
  2. 可読性向上のための2進リテラルと数値内のアンダースコア区切りのサポート。例えば、こう書けるようになる。long creditCardNumber = 1234_5678_9012_3456L
  3. Switch文におけるStringのサポート。

java.util.concurrentパッケージのアップデートには、Phasers、TransferQueues、fork/joinフレームワークのサポートが含まれている。Alex Miller氏は、今回入った機能や、まだ入っていないFences APIやParallelArrayといった機能について、素晴しい記事を書いている。

これらの変更に加えて、Swingの新しいコンポーネントとしてJLayerが加わった。これにより、複合コンポーネントの修飾やサブコンポーネントイベントの捕捉が可能になる。Sunはまた、JREを提供しているすべてのプラットフォームをカバーするよう、楕円曲線暗号の実装を拡大した(これまではSolarisでしか利用できなかった)。Milestone 5には、Josh Bloch氏がPythonの「TimSort」からもってきた新しい高速なマージソートアルゴリズムなど、数々のパフォーマンス改善も含まれている。VMレベルでは、エスケープ分析と64ビットポインタを32ビットになるよう圧縮することが、HotSpot仮想マシンのデフォルトとして有効になっている。これはメモリ消費を削減して、パフォーマンスを改善するのに役立つ。

これら以外にも数多くの変更がある。詳細については、変更点についての完全なリストを参照しよう。

Milestone 5はJava 7の最初のFeature Completeリリースになることが期待されていたが、それには至らなかった。Milestone 5リリースに含まれた主要な機能を以下に示す。

vm コンプレス64ビットオブジェクトポインタ
G1ガベージコレクタ
JSR 292: 非Java言語のためのVMサポート (InvokeDynamic)
言語 JSR 308: Java型におけるアノテーション
コア クラスローダーアーキテクチャのアップグレード
URLClassLoaderをクローズするメソッド
Unicode 5.1
JSR 166y: 並行処理とコレクションのアップデート
JSR 203: Javaプラットフォームのためのさらなる New I/O API (NIO.2)
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
楕円曲線暗号 (ECC)
クライアント 6u10デプロイメント機能のポーティング
6u10グラフィックス機能のための新しいプラットフォームAPI
SwingのためのNimbus look-and-feel

まだ含まれていない主要な機能には、次のようなものがある。

  • モジュールシステム(Project Jigsaw)と、それに関連したモジュラープログラミング (JSR 294) のための言語およびVMサポート。
  • 自動リソース管理、コレクションリテラル、JSR-292の言語レベルでのサポート、可変引数メソッド呼び出しの簡素化など、Project Coinの機能の数々。
  • もともとM4リリースで予定されていたXMLスタックのアップデート。
  • Java 2DのためのXRenderパイプライン。
  • Dual-Pivot Quicksortの実装。

実際には、ほとんどクローズに近いものもある。例えば、Dual-Pivot Quicksortに関するコードは、2009年12月3日のMilestone 6の最初のビルド、build 77に入ることになるだろう。しかし、まだほど遠いものもある。Project Jigsawは進展しているものの、現時点ではアルファレベルのLinux向けのバイナリがM5用にダウンロードできるだけだ。同じく、JSR 294も完成までにはまだしばらくかかりそうだ。Alex Buckly氏はエキスパートグループのメーリングリストにおいて、Simple Module System提案を推進するべきではない、と提案している

JigsawとOSGiはいずれも、当初JCPの外部で定義されたものであり、これらを統一するモジュールシステムを定義するのにJSR 294はふさわしい場とは思えません。善意から出た、厄介な妥協の産物になってしまうでしょう。Simple Module System提案はエキスパートグループにおいて明確に支持されているわけではありません。私はこれ以上、我慢したくはないのです。

JDK 7にはまだ長い道のりがあることを考慮して、Sunは新しいマイルストーンリリースを追加して、Feature CompleteビルドをMilestone 8(2010年6月)へと先送りした。これにより、multi-catchや、以前紹介したクロージャのような機能がJDK 7リリースに入るかもしれないが、最終リリースは2010年9月へと約6か月延期されることになる。

この記事に星をつける

おすすめ度
スタイル

BT