Ext GWTとSmart GWTの比較

GWTのウィジェットライブラリであるExt GWTとSmart GWTの比較。
id:shinさんとは意見が違うので、書いておきます。
http://d.hatena.ne.jp/shin/20091127/p2
Smart GWT
Ext GWT


ひとつ、最初にお断り。Ext GWTではプログラム組んだことがあるけど、Smart GWTはAPIやサンプルコードを追っただけなのと、Ext GWTはもうライセンス料払ってるので、おそらくExt GWTよりの評価になっています。


まず、IE6の対応について。IE6の場合、JavaScriptが重すぎて処理が書けないので、ブラウザでフルアプリケーションは組まないほうがいいと思います。
つまり、Ext GWTもSmart GWTもIE6にとっては重いので、やめたほうがいい。普通に苦情が出るレベル。IE6をサポート範囲にしないといけない場合は、普通のWebアプリ+GWTでちょっと入力チェックくらいか、フルアプリケーションならFlashとか使うほうがいいと思います。
ということで、ここからはIE6はサポートしない方向で書きます。IE8はだいぶまともなスピードで動いてるので、採用してもいいかも。どうしてもIE6+GWTでフルアプリケーションつくりたいなら、Chromeプラグインでも入れてもらってください。


ここで、Ext GWTとSmart GWTの簡単な説明。
Ext GWTは、名前からわかるようにExt JSのGWT実装です。ただし、Ext JSのGWTラッパーではなく、Ext JSをGWTで書き直したものです。
ところで、GWT Extというのがあって、これは、Ext JSのGWTラッパーです。ところが、Ext JSがライセンスをLGPLからGPLに変更したので、GWT Extの開発者が怒ってSmartClientというJSライブラリのラッパとして開発したのが、Smart GWTです。


ライセンスは、Ext GWTがGPLと有償の商用ライセンス、Smart GWTはLGPLです。
無償で使う前提なら、LGPLで使えるSmart GWTのほうがいいでしょう。
Ext GWTの商用ライセンスは、1開発者のライセンスでだいたい4万円くらいです。サポートをつけると7万円くらい。日本語のみのやりとりでライセンス購入できます。
Smart GWTのほうは、SmartClientでサーバー連携などが強化されたサポート付のエディションがあって、こちらは$745です。


どういうことができるかは、デモをみてみるのが手っ取り早い
Ext GWT
http://www.extjs.com/explorer/
Smart GWT
http://www.smartclient.com/smartgwt/showcase/


基本的なコンポーネントに関しては、同様のものがそろっています。
比較して気づくのは、Smart GWTの画面読み込みの重さです。デモを切り替えるときにかなりまたされます。ちょっと不安になります。画面切り替えがあるようなソフトは気を付けたほうがよさそう。
また、Smart GWTは、それぞれの操作がワンテンポ重い気がします。これはJavaScriptとGWTの二重構造になってるためかと思ったのですが、どうもSmartClientが重いように思います。


コンポーネントの機能の違いは、Ext GWTのチャートと、Smart GWTのカレンダーでしょうか。
Smart GWTのカレンダーはGoogleカレンダーっぽいことが手軽にできてとても素敵です。Ext GWTのチャートは、Flashを使ったコンポーネントですが、なかなか便利そう。
カレンダーはものすごく魅力的ですが、チャートのほうが出番は多い気がします。
個人的に困ってるのが、Ext GWTのポートレットの列を変えるAPIがないこと。結構ムリヤリなコードが必要です。あと、ポートレットの閉じるボタンがない。


開発のやりやすさですが、APIはSmart GWTのほうがスッキリしてるように思います。ただ、ひとたびわからない挙動があると、Smart GWTではJavaScriptライブラリまで追っていかなくてはなりません。基本的に、Smart GWTのライブラリは、JavaScriptで書かれたSmartClientライブラリを呼び出しているだけです。
Ext GWTのほうは、できる限りのことはすべてJavaで書かれているので、Javaだけ追えば大丈夫です。たとえばButtonクラスは、JSNIでのJavaScriptすらありません。ライブラリの挙動を確認する必要性はそれなりにあるので、すべてJavaで書かれているのは心強いです。また、処理を一部分かえたコンポーネントを作りたい場合、継承で対応できなければ元のソースをいじる必要がありますが、そのときにJavaScriptを触らなくていいので楽です。


デザインは、独断と偏見で、Smart GWTの勝ちです。かわいい。


ということで、まず、無償でやりたいならLGPLのSmart GWTですね。GPLでソース公開するのは問題ないとしても、ソースをGPL対応にするのがめんどくさいです。ぼくはこのめんどくささから逃れるためにライセンス料払いました。
お金を払ってでもサポートが欲しいなら、日本語でやりとりができるExt GWTでしょう。
コンポーネントは、チャートが欲しいならExt GWtで、カレンダーが欲しいならSmart GWT。
すっきりプログラムを書きたいならSmart GWTで、ライブラリコードが追いやすいのがいいならExt GWT。
画面切り替えが多かったり、反応スピードが速い方がいいならExt GWT。
商売としてやるなら、ライセンス料払ってExt GWTを使うほうが、ソースの一番深いところまで追いやすく、拡張しやすいいのでいいのではないかと思います。
ぼくは、JavaScript読み書きたくないからGWT使うので、JavaScript追わなくていいExt GWTにしました。


と言ったところでしょうか。
一番いいのは、使い易いライセンスで全部GWTで書かれてカレンダーもチャートものったデザインがかわいく動作が軽快なGUIフレームワークが出てくることですね。