続 RIA 技術の紹介/比較記事を読んで・・・デモプログラムを作ってみた

以前、読んだ「FlexとSilverlightで同じアプリを作って比較してみた(1/3)- @IT」という記事の中で、残念ながら JavaFX のサンプルプログラムが無かったので、自分で作ってみました。
ただ現時点では、JavaFX に Swing でいう JTable に相当するコンポーネントがまだないので、自作するしかありません。*1
テーブルを自作する方法をネットで調べたところ二つの方法を以下のページで見つけました。

  1. James Weaver on Quantum Computing and Java: TableNode: Creating a Custom Scrollable Table in JavaFX
  2. JavaFX: Reintroduce Swing JTable - DZone Java]

最初のは、Swing を用いず JavaFX の Scene Graph API のみでテーブルを作る方法。実装はかなり複雑になるが、common profile の API しか使っていないので、移植性が高い。*2
そして次のは、Swing を使う方法で、SwingComponent クラスを拡張して、JTable をラップする方法。desktop profile の API を使うのでモバイルなどでは使えないが、実装は上と比較してシンプルになる。
で、今回は後者を選択しました。初めは最初の方法でやりかけてたのだけど、ちょっと時間がかかりそうだったので、これはまた次回の機会にします。
それで下の URL がデモ。@IT の記事のでもプログラムのリンクも貼っておきます。


Flex のデモ(@IT
http://www.atmarkit.co.jp/fwcr/rensai2/ria03/atmarkitflexsample/AtmarkitFlexSample.html

Silverlight のデモ(@IT
http://www.atmarkit.co.jp/fwcr/rensai2/ria03/atmarkitsilverlightsample/AtmarkitSilverlightSampleTestPage.html

JavaFX のデモ
http://www7b.biglobe.ne.jp/~fooami/demo/javafxexample01/JavaFXExample.html


見た目はだいたい近いものにしましたが、シンプルにしました。少し頑張れば、立体感を出したり、グラデーションを入れたりもっと格好の良いものにもできましたが、それでは比較にならないので。
で、作ってみた感じから比較すると、、、わかりません。(^^;
生産性とかそういった部分は Flex と Siliverlight を作っていないので。
ただ Flex と Siliverlight のソースを見ながら、JavaFX に移植してみた感想はこんな感じ。

  • 特に苦労無く移植できた
  • Siliverlight の画面のデザインは XAML ファイルで定義でされるが、非常に読み難い
  • Flex の画面のデザインの MXML ファイルは Siliverlight ほどではないがやはり読み難い
  • JavaFX は画面のコンポーネントはまだ少ない

といった感じです。Siliverlight の画面は XAML ファイルを直接編集することは絶対したくないなと感じました。IDE がそのへんを隠して作れないと、お話にならないです。少なくとも僕は。
対して JavaFX の画面デザインは、JavaScript のオブジェクトリテラルのような宣言型構文を使って記述され、読みやすく理解しやすいです。その反面、コンポーネント不足です。ただ、Swing をラップしてカスタムの新しいコンポーネントを作ることは、全然難しいことではないということが今回わかりました。この問題も何れ JavaFX がバージョンアップすれば解決するでしょう。今後に期待です。


RIA (特に JavaFX )ますます熱いです!

*1:直に正式な API が登場すると思います。

*2:但し、入力イベント関連機能は common conditional keyboard、common conditional mouse という条件付