ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

SwingコンポーネントをWebで使う



SwingのUIコンポーネントをWebアプリケーションで
使ってしまおうという面白い記事がありました。
http://today.java.net/pub/a/today/2006/04/20/bringing-swing-to-the-web.html


コンポーネントの描画処理もJavaで記述しているがために
当初は動作が遅いと言われていたSwingですが、現在では
(少なくともボクの体感では) SWT/JFaceなどと比較しても
さほど遜色ないレベルになっていると思います。


そして、このSwingの基本設計をうまく活用しているのが
上記の記事です。
やっていることは意外とシンプルで、コンポーネント
BufferedImageを作成して、そこからGraphics Context
を取得し、各コンポーネントのpaint()メソッドにその
Contextを引数として渡してやるというものです。要は
画面に描画する代わりに、Imageオブジェクトに描画を
させているわけです。でもって、その描画結果をWebで
ストリームとして返してやればブラウザ上に表示可能
ということになります。


以前にLaszloAjaxへの対応を発表した際にも書きましたが
一つのマークアップ言語が様々なレンダリングに対応すると
いう考え方は今後注目されてくると考えています。


これまでは描画処理がJavaで書かれている(つまりOS依存しない)
ことのデメリットの方が目立ってしまった感のあるSwingですが、
こうしたアプローチによってSwingが違った観点で再注目される
ことになったりすると面白いかも知れませんね。