Revision 1 as of 2011-11-22 04:01:15

Clear message
Locked History Actions

GWT/Outline

GWTの概要

※以下は現在の理解を元にしているものであり、適当かどうかは保証できません。

GWT(Google Web Toolkit)はその名の通り、Googleがリリースするウェブアプリケーション作成のためのツールである。 特にEclipseに限定しているわけではなく、コマンドラインツールとしても使用できるのだが、ここではEclipseを前提とした開発環境を見てみる。

目的と特徴

主には、クライアントとしてAjaxウェブアプリケーションと、そのサーバサイドの両方を開発することを目的とする。 クライアントサイドのAjaxアプリは当然、htmlとjavascriptによるものである。特徴的な事柄としては以下。

Javaからjavascriptへの変換

  • (ライブラリの中身に立ち入らない限り)javascriptは一切記述する必要が無い、すべてをJavaで記述することができ、Javaコードはjavascriptコードに変換される。つまり、Java+htmlで記述したクライアントコードがデプロイ時にはjavascript+htmlとなる。
  • 開発環境においては、Javaとしてデバッグを行うことができる。ステップ実行さえも可能。

GWT Deisgner

  • Javaのウィジェットとして標準的なのものが用意されており(当然これらもjavascriptに変換される)、それらのレイアウトを行うためのGUIビルダが付属している。
  • 上記のウィジェットが不足であれば、サードパーティ製のウィジェット(SmartGWT,GXT等)を使うことができる。

RPC

  • クライアントサイドとサーバサイドのRPC(Ajax通信)は独自の方式がサポートされている。これもソース上はJavaからJavaへの呼び出しであるため、異言語間のインターフェース変換を考慮する必要がない。シリアライザーションはJava標準の形式で記述できる模様。
  • ただし、このRPCは必ず非同期で行われる。つまり、サーバサイドをコールしてその応答を待つことはできない(おそらくこれは単一スレッドしか使用できないjavascriptの制約によると思われる)。

サーバサイドとデプロイ

  • サーバサイドは通常のサーブレットコンテナ向けのものと、App Engineのものとに対応している。
  • App Engine用のデプロイはEclipseから簡単にできる模様。
  • サーブレットコンテナのデプロイ用のwarファイルの作成も(Eclipseからは若干面倒だが)可能。