BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Project Coinが小さな言語仕様の変更に関する最終リストを公表

Project Coinが小さな言語仕様の変更に関する最終リストを公表

原文(投稿日:2009/09/02)へのリンク

Joseph Darcy氏はProject Coinの最終リストを公開した。これはJavaの次のバージョンである7のリリースで、変更として認められたものである。

  1. 自動リソース管理(ARM:Automatic Resource Management):リソースクリーンアップの機構を提供する。ARMブロックはC#のusingステートメントに似ているが、tryステートメントの形式に基づいている。結果として、usingステートメントが単独のリソースしか扱えないのに対して、ARMは与えられたブロックのスコープで複数のリソースを制御することができる。
  2. 整数リテラルの改善:可読性を上げるため、バイナリリテラル数値内のアンダースコア区切りのサポートを追加した。例えば以下のように記述できる。
    long creditCardNumber = 1234_5678_9012_3456L.
    記号なしリテラルの制御も、期間内に解決法が見つかれば改善されるかもしれない。
  3. コレクションリテラル:サポートが追加されるのは、不変リスト("immutable list")、配列の初期化に似たシンタックスによるセットとマップリテラルである。さらに、リストとマップに対するインデックスによるアクセスのサポートも追加されるかもしれない。
  4. ジェネリックのインスタンス生成時に用いられる型推論の改善(< > またはダイアモンド):インスタンス生成時に制限された型推論を用いる。これによってパラメタ化された型をコンストラクタ用に明示的に宣言しなければいけない場所でも、文脈から確定できる場合には空の型パラメタで置き換えることができる。
    Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
    上記の代わりに、以下のように書ける。
    Map<String, List<String>> anagrams = new HashMap<>();
  5. JSR292のための言語サポート:ここにはinvokedynamic命令、メソッドハンドル呼び出し、特定の変換の緩和、エキゾチック識別子が含まれる。
  6. 可変引数のメソッド呼び出しの簡素化:可変引数が具現化できない配列型と結びつけられている場合には警告が発せられるが、それについてコンパイラが変更される。変更によって警告は呼び出し箇所からメソッド宣言に移動される。
  7. Switch句におけるString型のサポート

これらの提案の大部分は、2009年10月の終わりまでに、JDK7の開発Mercurialリポジトリに含まれることが期待されている。

最終候補として挙げられていたもので、最終リストに含まれなかったものが3つある。改善されたJavaの例外処理Elvisとその他Null-Safeな演算子巨大な配列だ。

Joseph Darcy氏は以下のようにコメントしている

「改善された例外処理は、言語にとってみれば良い変更だったでしょう。しかしこれは型システムに迫るものであり、JDK7の機能として仕上げるだけのリソースがあるかどうか見積もることができませんでした。言語を発達させるため努力が今後も続き、そこで再び改善された例外処理が考慮されることを期待します。Elvisと関連する演算子はGroovyにおいて役立つものでした。しかし、GroovyとJavaの違い、例えばプリミティブ型の存在やボクシング/アンボクシングの相互関係といったもののため、Javaではこれらの演算子がそれほど使えません。JDK7ではnullハンドリングの苦労を和らげる他の方法をサポートします。これには、JSR308で可能になったnullチェックなどが該当します。32-bit以上をネイティブにサポートするAggregate型はリストに挙げられる価値があるもので、今後さらに必要とされることは間違いありません。コレクション型に対する言語サポートによって、プラットフォームが直接巨大なデータ構造を扱うようになるまでは、このような機能はライブラリとして開発することができます。」

この記事に星をつける

おすすめ度
スタイル

BT