2011/10/02(Sun)
○[RIA][Java] Google Web Toolkit(その1)
最近仕事でGWT + SmartGWTを採用したりしたのですが、前者のドキュメントは古いし日本語訳はアレだし、後者に至ってはJavadocすら内容微妙なもんで、何回かにわけて導入から開発TIPSなど書いてみる予定。いろいろハマりどころ多いので…
@Google Web Toolkitとは?
Google Web Toolkit(以下GWT)は、いわゆるRIA(Rich Internet Application) を作成するツールキットです。アプリケーションはクライアントサイド、サーバーサイド共にJavaで記述しますが、クライアントサイドについてはトランスレータがHTML5 + JavaScriptに変換するので、Java Appletのようなプラグインを一切必要としません。
http://code.google.com/intl/ja/webtoolkit/
サポートされているウィジェットについては以下のショーケースをご覧ください。
http://gwt.google.com/samples/Showcase/Showcase.html
またサードパーティーにより、よりリッチな機能を持つライブラリも提供されています。
@GWTの利点
JavaScriptで開発を行う上でしばしば開発者の頭痛の種になるのが、JavaScript処理系の互換性の低さとHTML表示の差異ですが、GWTはこれらをすべてトランスレータが吸収するので、これらの問題を気にすることなくコーディングを行うことが可能です。
現在サポートされるブラウザは以下の通りです
- Google Chrome 全バージョン
- Microsoft Internet Explorer 6以降(ただしIE8以降ではIE7互換モードが必要な場合あり、後述)
- Mozilla Firefox 1.0以降
- Opera 9以降
- Apple Safari 2以降
HTML5 + JavaScript技術がベースですのでさすがにi-mode CHTML対応までは無理ですが、近頃急速に普及が進むスマートフォンであればSafari, Chrome, Operaなどで利用することが可能です。また別途GWT Mobile Webkitなど別プロジェクトによりスマートフォン向けの機能も提供されています。
http://code.google.com/p/gwt-mobile-webkit/
またメッセージなどの国際化(internationalization、以下i18n)を支援する機能もあるので、異なる言語でユーザインタフェースを提供することも容易になっています。
クライアントとサーバ間での通信はGWT-RPCという非同期通信がサポートされシリアライズ可能なPOJOのデータ連携が可能です。GWT-RPCのサービスはごく単純なServletの拡張ですので多くのサーブレットコンテナ上で動作します。また他のJ2EE技術(JDBCやEJB/JPAなど)との組み合わせも容易です。
またクライアントがGWTに限定されてしまうGWT-RPCを使いたくないという場合でも、JSON形式のデータも扱うことが可能(若干めんどくさくはあるのですが)ですので、サーバーサイドを別の言語やフレームワークで開発することも可能です。SmartGWTなどを導入すればよりシンプルにJSONを処理したりXML-RPCでの通信も可能になりますので、既存のWEB APIとの連携もより容易になります。
@開発環境
開発環境としてはGWT SDKが提供されており、最新のバージョンは2.4.0です(2011/10/02現在)
http://code.google.com/intl/ja/webtoolkit/versions.html
ユーザインタフェースの開発はeclipse 3.7でVE(Visual Editor)を押しのけて標準となったGUIビルダ WindowBuilder(以下WB)上でWYSIWYGなデザインが可能ですので、HTMLやJavaScriptを知らなくても開発できます (フォントの指定などCSSに関する最低限の知識は必要ではありますが)。
WBはかつてApplet/Swing/SWTなどのJavaアプリケーションのみならずGWTをもサポートする開発環境としてInstantiations社から販売される商用製品でしたが、これをGoogleが買収しeclipseプロジェクトに寄贈されました。
http://googlecode.blogspot.com/2010/12/windowbuilder-becomes-new-open-source.html
そしてプロジェクトの作成、ビルド & デバッグ、デプロイを支援するeclipse用pluginが(ちょっと混乱しますが)2種類提供されています。
- Google plugin for Eclipse
http://code.google.com/intl/ja/eclipse/docs/download.html
GWT SDKとGoogle App Engine(以下GAE) SDK、そしてWBの制限版が含まれます。 - GWT Designer
http://code.google.com/intl/ja/webtoolkit/tools/download-gwtdesigner.html
GWT SDKとWBの完全版が含まれます、GAEはサポートしません。
ぱっと見では前者の方が良さそうなのですが、WB制限版ではSmartGWTやExtGWTを使った開発ができないという落とし穴があります。同時にインストールすることももちろん可能なのですが、両者のメニューが混在した状態となり混乱を招くので、この記事では次回以降は後者を使って話をしていきます。
@次回
ここまで書いたところでWindows7がビジー状態に陥ったのでやる気もげたんでまた続きは次回、インストールしてみる編。
つーかこんな記事に需要あるんだろーか、ぜんぜん日本で流行ってないしなー。