Java SE 7の新機能!!

izu@San Franciscoさんからの情報。Java SE 7の新機能について。
What's coming in Java SE 7を参照。

とりあえずざっと見た感じでは・・

  • 2008年ごろリリースしまっせ
  • Java Module(JAM)っていうモジュールシステムが追加される。Jarのすごい版みたいな感じかな。
  • superPackagesっていう概念の追加。よくわからんけど、スーパーパッケージっていう単位でいろんなパッケージをまとめて(メンバ化して)、外部に見せるものをexportで指定する、ってな感じ?外からはスーパーパッケージだけを参照すれば良い、ということかしら。
  • Collectionに、growthFactor()っていうメソッドが追加?よくわからん。誰か教えて。
  • JDK7にはJRuby,Jython,Beanshellなど多言語のインタプリタがバンドルされる
  • Bean Binding, Bean Validation, Swing Application Framework、なんていう機能が追加されて、Swingアプリ開発が簡単になるのかな。MVCの連携を旨いことやってくれる機能かね。
  • Javadoc Tagが拡張される。サンプルコードを記述するためタグや、メソッドをカテゴライズするタグが増えるらしい。
    • JavaSE6ではドロップされた:-(
    • でもJavaSE7には含まれるから安心せよ:-)
  • 文法追加その1!言語レベルでxmlサポート。こんな感じでかけまっせ。でもってXPathもサポート。
elt.appendChild(
    currentSpeaker
    Calendar.TUESDAY
    );
  • 文法追加その2!Java Beans プロパティーを以下のように定義できまっせ。これはC#でもあったね。
(いままで)
private String foo;
public String getFoo() {..}
public void setFoo(String foo){..}

(これから)
public property String foo;
  • 文法追加その3!ワオ!JavaBeansプロパティアクセスに矢印オペレータ("->")が使える!"->"でプロパティにアクセスして、"="で代入って感じね。
(今まで)
a.setFoo(b.getFoo());

(これから)
a->Foo = b->Foo;
  • switch文でStringが使える。これは地味にうれしい。
  • インスタンス生成の短縮化。こんな感じ。たしかに型パラメータつきのクラスをnewするのはメンドイよね。
(いままで)
Map<String,List<Integer>> m = new  HashMap<String,List<Integer>>()

(これから)
HashMap<String,List<Map<String,List<Integer>> m = new(); ??
Map<String,List<Integer>> m = new Hashmap(); ??
  • クロージャの完全サポート。メソッド引数にメソッドを渡せたりする(あってる?)。

以上。