Java SE 7には、動的言語サポート以外にもさまざまな新機能の導入が予定されている。同セッションではCoward氏によって現段階で導入が検討されている機能として以下に挙げるようなものが紹介された。
- モジュラリティのサポート強化
- アノテーションの拡張構文(JSR 308)
- 言語レベルでのプロパティのサポート
- クロージャ
- インスタンス生成のための簡易文法
- BigDecimalやコレクションのためのオペレータ・オーバーロード
- Swingアプリケーション開発フレームワーク(JSR 296)
- Beans Validation(JSR 303)
- Beans Binding(JSR 295)
- マネジメント機能(JMX)のアップデート(JSR 255、JSR 262)
- New I/O 2(JSR 203)
- javadocタグのアップデート(JSR 260)
- Date and Time API(JSR 310)
モジュール化のサポートとは、開発時におけるモジュール化とデプロイメント時におけるモジュール化の2種類がある。前者については、パッケージ間の関係を構成する"superpackage"を導入するとの話である。これはJSR 294として仕様の策定が進められている機能で、パッケージどうしをsuper-packageという単位にまとめることで、パッケージ間のアクセスに幅を持たせられるようにするものだ。例としてリスト1のようなコードが示された。
リスト1 superpackageのコード例
super package org.foo.document {
// super-package exports:
export org.foo.pics.MyImageInterface;
export org.foo.txt.*;
// super-package members:
org.foo.pics.MyImageInterface;
org.foo.txt.*;
org.foo.data.*;
}
デプロイメント時のモジュール化はこれまでJAR(Java ARchive)によって実現されていたが、これを拡張したJAM(Java Application Module)という形式を導入する。JAMはJARと似ているが、ライブラリの依存関係などをより詳細なレベルで定義することができる。これはJSR 277として標準仕様の策定が進められている。
JAMファイルの構成例 |
多言語サポート、モジュラリティと並んでJava SE 7で重視されている項目に、デスクトップアプリケーション開発環境の改善が挙げられる。SwingはGUIアプリケーションを作成するための強力なライブラリではあるが、簡単なウィンドウを表示させるだけでも多くのコードを記述しなければならない点などに不満の声も多かった。
Java SE 7ではJSR 296として仕様策定が進められているSwing Application Frameworkの導入によってこの問題の解消を狙っているという。これはGUI構築のためにお約束のように記述しなければならないコードなどを省略できるなど、より容易にSwingアプリケーションを開発できるようにするためのフレームワークである。それに加えてJava BeansとSwingのデータモデルを関連付けることができるバインディングAPIなども導入される予定だ。
Java SE 7におけるSwingのアプリケーションモデル |
同セッションでは詳しく触れられなかったが、クロージャの導入なども開発者にとっては興味深い部分である。一方、昨年まで囁かれていたXML文法のサポートに関しては、今回Coward氏はいっさい触れることがなかった。Java SE 7への導入は見送られることになるのだろうか。
Java SE 7については依然として検討中の項目がほとんどであるため、今後の展開から目が離せない。