Google Web Toolkit

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 などがある。

関連項目 
 Google Developers

脚注

参考文献

外部リンク 
 
 GWT homepage on Google code
 Official GWT blog
 Conference on GWT organized by Addison-Wesley, Prentice Hall and Pearson Education

Web Toolkit
JavaScriptライブラリ
JavaScriptウェブアプリケーションフレームワーク