AjaxSwingとは
AjaxSwingは、AWT/Swingを使って作られたJavaのGUIアプリケーションを、Ajaxを利用したインタラクティブなWebアプリケーションに変換し、Webブラウザから利用できるようにするツールである。CreamTecによって提供されているこのツールは、AWT/Swingで作成されたアプリケーションを、そのままの見た目でWebアプリケーションとして利用できるようにするという非常にユニークなもの。変換後のUIはHTMLやAjax技術を用いて構成される。
AjaxSwingによって生成されるWebアプリケーションは、Servletコンテナ上で動作するサーバ部分と、Webブラウザ上で動作するUI部分から構成される。ブラウザ上でのコンポーネントのレンダリングや、サーバとブラウザ間の非同期通信にはAjaxの技術が活用される。イベント通知などもAjaxを用いて忠実に再現されている。
AjaxSwing自身もJavaで開発されているため、Javaに対応したプラットフォームであれば動作させることが可能。配備用のServletコンテナとしてApache Tomcatが付属するので、Swingアプリケーションさえ用意すればすぐに試してみることができる。
インストールとデモアプリの実行
AjaxSwingはこのページの「Download AjaxSwing」のリンクからダウンロードできる。ただし、ダウンロードにはCreamTecへのアカウント登録(無償)が必要。本稿執筆時点での最新版はAjaxSwing 3.2.2であり、Windowsインストーラ版とzipアーカイブ版が用意されている。今回はWindows上で実行するのでWindwosインストーラ版(ajaxswing322.exe)を使用する。
ダウンロードしたファイルを実行するとインストーラが立ち上がるので、あとは指示に従ってインストールを実施すればよい。インストールが完了したら、スタートメニューの「AjaxSwing 3.2.2」の項目から「AjaxSwing Console」を実行すれば、図1のように管理コンソールが立ち上がる。
ツールバーの一番右にある[Ajax SwingDemo]をクリックするとデモアプリケーションを実行することができる。最初にTomcatが起動し、Webブラウザが立ち上がって配備先である「http://localhots:8040/ajaxswing/apps/WindowsThemeDemo」にアクセスする。このデモはメーラをWebサイト上で実行できるようにしたいわゆるWebメールだが、図2のようにSwingの見た目を保ったものになっている。
ちなみに、このデモアプリは「View」メニューから「AjaxSwing Demo as an application」を選択することで、元々のSwingアプリとして実行することもできるので、両者の違いを見比べてみるといいだろう(図3)。
SwingアプリからWebアプリへの変換
続いて、SwingアプリケーションからAjax Webアプリケーションへ変換する方法を紹介する。元になるSwingアプリとしては、NetBeansにサンプルプロジェクトとして付属する「DocumentEditor」を利用する。このプログラムはSwing Application Frameworkを用いたものなので、標準のAWT/Swingライブラリだけでは動作しない。まず、DocumentEditorを普通に実行した場合は図4のようになる。
AjaxSwingを使えば、ウィザードによって簡単にこれをWebアプリに変換することができる。ウィザードはAjaxSwingコンソールツールバーの左端にある「App Wizard」から実行する。まず最初に、図5のように[New Application]にチェックを入れた上で、任意のアプリケーション名を記入する。なお、既存のアプリの設定を変更する場合には[Edit existing Application]にチェックを入れ、対象のアプリを選択すればよい。
[Next]ボタンを押すと図6の画面が表示されるので、[Main class]の部分にmainメソッドを含むクラス名を記入する。もしコマンドラインオプションが必要な場合には、その下の[Application command line]の部分に記入しておく。続いて下部の[Application CLASSPATH]にアプリケーションの実行に必要なファイルまたはディレクトリを設定する。DocumentEditorの場合は「DocumentEditor.jar」となる。また、Swing Application Frameworkを使っているため、それに関連したjarファイル(プロジェクトのlibフォルダまたはdistフォルダに含まれている)も追加しておく必要がある。
次の画面(図7)ではWebアプリの動作に関する設定を行う。[InProcess clients]というのは、コンテナ内の共通のJVMで実行するか、単体のJVMで実行するかという選択である。[Theme]はUIのテーマの設定で、Blue, Light, Windowsのいずれかから選択する。ここでは[Blue]を選択した。
以上で設定は完了だ。[Finish]をクリックするとアプリケーションの変換と配備が実行され、成功すれば図8のようにアクセスするためのURLが示される。この例では、Webブラウザより「http://localhost:8040/ajaxswing/apps/DicumentEditor」にアクセスすればよい。このダイアログで[はい]をクリックすれば、Webブラウザが起動して自動的に該当のURLにアクセスしに行ってくれる。
実行結果は図9のようになる。Swingアプリとして実行したのとほぼ同じUIが再現されていることが確認できるだろう。入力やボタン押下などのイベントなども処理できるが、すべてのイベントがサポートされているわけではないため、一部で動作しない機能もある。また、この例ではアイコンの画像が一部表示されていないが、これはアイコン画像をSwing Application Frameworkの機能を利用してプロパティファイルで指定しているためと思われる。Swingネイティブ以外の機能を使っている場合には注意が必要だ。
イベント処理などでまだ対応していない機能はあるものの、SwingベースのアプリケーションをそのままWebアプリケーションとして公開できてしまう点は非常に興味深い。変換後のWebアプリはHTMLとJavaScript/Ajaxで構成されるので、Webブラウザへのプラグインなどを必要としない点も魅力的である。