Google Web Toolkit (GWT ) は、Javaを使ってウェブ用Ajaxアプリケーションを開発できるオープンソースのJavaソフトウェア開発フレームワークである。Apache License 2.0でライセンスされている。
GWTは再利用可能で効率的なAjaxソリューションであることを強調しており、すなわち非同期RPC、履歴管理、ブックマーク、ブラウザ間の移植性の良さなどを特徴とする。
歴史
GWT version 1.0 RC 1 (build 1.0.20) は2006年5月16日にリリースされた。Googleは2006年のJavaOneでGWTを発表した。
開発
GWTを使うとAjaxアプリケーションをJavaとJava用開発ツールを使って素早く開発できる。そして、そのアプリケーションを配布する際には、GWTクロスコンパイラがJavaからJavaScriptへの変換を行い、オプションで高度に最適化された(読みにくい)コードも生成できる。
GWTは単にインタフェースまわりの開発にとどまらず、JavaScriptを使った任意の高機能クライアントを構築できる。GWT開発者は、GWTは単なるライブラリではなく、新たなAjaxライブラリの実装というだけではないことを強調する。そのオープンエンドの哲学は徹底しており、多くのアーキテクチャ上の決定がGWTを利用する開発者に委ねられている。GWTの目的を記した文書を見ると、GWTの役割と開発者の役割をわかりやすく解説している。例えば、履歴トークンはGWTが管理するが、履歴トークンがアプリケーションの状態とどう対応するかは開発者に委ねられている。
GWTアプリケーションは以下の2つのモードで動作する。
ホステッドモード : JavaバイトコードとしてJava仮想マシン (JVM) 上で動作する。一般に開発途中で利用するモードで、コードのホットスワップやデバッグをサポートしている。
ウェブモード : JavaScriptとHTMLとして動作する。元は Java のソースコードである。開発完了後は、この形態で使用する。
GWTにはコマンド行ユーティリティapplicationCreatorがあり、GWTプロジェクトを開始するのに必要な全ファイルを自動生成する。Eclipse用プロジェクトファイルを生成することもできる。GWTを使ったIDEでの開発を支援するオープンソースのプラグインがいくつかある。例えばNetBeans向けのGWT4NB、Eclipse向けのCypal Studio for GWTやGoogle社が作成、提供しているGoogle Plugin for Eclipse、JDeveloper向けのgwtDeveloperなどである。
コンポーネント
主なGWTコンポーネントは以下の通り。
GWT Java-to-JavaScript Compiler
Javaで書かれたプログラムをJavaScriptに変換する。
GWT Hosted Web Browser
開発時にGWTアプリケーションをホステッドモードで動作させる(JavaScriptに変換することなく、JavaアプリケーションをJVM上で動作させる)
JREエミュレーションライブラリ
Javaの標準クラスライブラリでよく使われるクラス(java.langパッケージのクラスやjava.utilパッケージの一部のクラス)をJavaScriptで実装したもの
GWT Web UIクラスライブラリ
ウィジェット生成のためのカスタムインタフェースとクラス群
機能
動的かつ再利用可能なUIコンポーネント : 実装に時間のかかる動的機能(ドラッグ・アンド・ドロップや仮想ツリー構造など)が予め実装されたクラスを使うことができる。
単純なRPC機構
ブラウザ履歴管理
高機能Javaデバッガサポート
ブラウザ間の非互換問題への対処
JUnit統合
国際化が容易
JavaScript Native Interface (JSNI) を使って、人間が書いたJavaScriptコードとJavaソースコードを組み合わせることができる。
Google のAPIをGWTアプリケーションで使えるようサポート(Google Gears など)。
オープンソース
JavaScriptではなくJavaを使って開発できるので、純粋なオブジェクト指向でアプリケーションを設計できる。誤字やデータ型の不一致など、JavaScriptで実行時に発生する主なエラーは、コンパイル時に検出できる。
GWTコンパイラが生成するJavaScriptのコードは、人間が読みやすい形式とダウンロードが高速な(読みにくい)形式を選択できる。
GWT向けの各種ライブラリをGoogleやサードパーティーが提供している。それを使ってGWTの機能を拡張可能。
使用可能なウィジェット
version 1.4(2007年8月)で提供しているウィジェットは以下の通り。
HTMLプリミティブ(ボタン、ラジオボタン、チェックボックス、テキストボックス、パスワードテキストボックス、テキストエリア、ハイパーリンク、リストボックス、テーブルなど)
プッシュボタン、トグルボタン
メニューバー
ツリー
タブバー
ダイアログボックス
各種パネル (PopupPanel, StackPanel, HorizontalPanel, VerticalPanel, FlowPanel, VerticalSplitPanel, HorizontalSplitPanel, DockPanel, TabPanel, DisclosurePanel)
リッチテキストエリア
サジェストボックス(自動補完)
デートピッカー(日付選択)
GWTにない一般的ウィジェットはサードパーティのライブラリで実装している。例えば、Ext GWT、GWT Component Library、GWT Widget Library、GWT-Ext、GWTiger、Rocket GWT などがある。
関連項目
脚注
参考文献
Dewsbury, Ryan (2007年). Google Web Toolkit Applications . Prentice Hall. ISBN 978-0321501967
Chaganti, Prabhakar (2007年). Google Web Toolkit: GWT Java Ajax Programming . Packt Publishing. ISBN 978-1847191007
Geary, David (2007年). Google Web Toolkit Solutions: More Cool & Useful Stuff . Prentice Hall. ISBN 978-0132344814
Hanson, Robert; Adam Tacy (2007年). GWT in Action: Easy Ajax with the Google Web Toolkit . Manning. ISBN 978-1933988238
Cooper, Robert; Charlie Collins (2008年). GWT in Practice . Manning. ISBN 978-1933988290
外部リンク
公式ウェブサイト
GWT homepage on Google code
Official GWT blog
Conference on GWT organized by Addison-Wesley, Prentice Hall and Pearson Education . Source: