torutkのブログ

ソフトウェア・エンジニアのブログ

JSR-296 Swing Application Framework

2008年リリース予定の次々期Java Standard EditionであるJDK 7をターゲットに仕様化が進められているGUIフレームワークです。標準搭載のGUIツールキットであるSwingは高機能なのですが複雑で習得が難しいため、簡単に開発ができるお手軽GUIフレームワークとして開発が進められています。
2006年のJavaOneサンフランシスコで概要が紹介されています。JSR-296の方はまだ仕様の公開までは達していないようです。
http://developers.sun.com/learning/javaoneonline/2006/desktop/TS-3399.pdf

Swing APIを使ってアプリケーションをいくつも作ってきたベテランの人にはあまりありがたみはないですが、初心者はSwing APIの使用上の注意をフレームワークがカバーしてくれます。

上記資料によると、以下のまずいプログラミングをしている人はこのフレームワークを使うことで恩恵を享受できるそうです。

  • mainスレッドでGUIを構築する処理を書いてしまっている人
  • JFrameを継承したアプリケーションクラスを作っている人
  • こんがらがったactionPerformedメソッドを作ってしまい、イベントディスパッチスレッドを止めてしまっている人
  • 英語だけ扱えればよいと思っている人

フレームワーク側で、アプリケーションのライフサイクル管理、リソース・プリファレンス・アクションの管理の雛形を提供しています。

フレームワークとしては、基底クラスの提供(Appletクラスのようなもの)およびアノテーションによるリソース(プロパティファイルに定義したデータをインスタンスのフィールドに対応付け:「インジェクション」)、アクションマップ(複数のイベントハンドラー・メソッドを定義したクラスを作成し、個々のGUIパーツのイベントと結びつける)が中心となります。イベントハンドラーには、別スレッドで処理を実行する非同期アクションも用意されるそうです。


Ease of Development(EoD)の流れとして、Swingアプリケーションを容易に開発できるようになるフレームワークという位置づけですね。ベテランの人も、自前でごりごりコーディングしていた部分が標準フレームワークに任せることができるので、それなりにメリットはあるでしょう。JDK1.2でSwingが標準搭載されて以来、あまり変化のなかったGUIアプリケーション向けAPIJDK 7で少し改善されることになります。