はじめてのGWT
GWTとは
簡単にいうとJavaでJavaScriptアプリケーションを生成するフレームワークです。Javaプログラムを書いているのだけれど、コンパイルするとJavaScriptに変換され、Ajaxアプリケーションができあがるということです。
GWTを勧める理由
いろいろ考え方はありますが、ここでは以下のメリットに着目します(個人的な主観がかなり入ってますが、、)
- ウェブアプリは確実にリッチクライアント(特にAJax技術)ベースに向かっている。よってこれからの時代はJavaScriptだろう。
- JavaSriptはあまり好きじゃないし、言語として扱いにくい。JavaScriptでゴリゴリとコードを書いていくなんて考えられない。
- GWTはJavaが使えたらJavaScriptを理解しなくていい(学習コストの削減)
- JavaScriptコードと連携する枠組みを残している(閉じた技術じゃない)
- Javaの資産(知識、コード)が使える。開発環境も流用できる
- Googleがバックにいる(奴らはすごい)
GWTのデメリット
- ちょっと下火になりつつある
- 日本国内ではマイナーなフレームワーク
- 古いブラウザだと動かない場合がある
3つめのデメリットはかなりまずく、折角システム開発したのに、実行環境で動かないということがありますので注意です。世間ではIEの古いバージョンが残っていることが多く、動作確認にはIE Tab等のChomeプラグインをいれましょう(Firefox版もあるらしいです)。
GWTプログラムの基本構成
GWTのプログラムは、
- clientパッケージ ・・・ JavaScriptに変換されブラウザ側で稼働するプログラム
- serverパッケージ ・・・ サーバー側で稼働するプログラム(データベース処理など)
- sharedパッケージ ・・・ 調査中(使わなくても良い)
の3種類が存在します。インタフェース側のプログラムは、必ずclientパッケージに書いてください。逆に言うと、サーバサード側で処理するプログラム(データベース処理など)は、必ずserverパッケージに置いてください。clientパッケージに置いてあるJavaコードは、JavaScriptに変換されようとします。よって、もしJavaScript側で対応できないようなクラスや記述があるとエラーになってしまいます。
EntryPontファイル(Javaクラスファイル)
これがクライアントの起点となるクラスです。中にonModuleLoad()メソッドがありますが、ここにメインとなる処理を書いていきます。
public void onModuleLoad() {
final Label label = new Label("Hello, GWT!!!");
final Button button = new Button("Click me!");
button.addClickListener(new ClickListener(){
public void onClick(Widget w) {
label.setVisible(!label.isVisible());
}
});
RootPanel.get().add(button);
RootPanel.get().add(label);
}
上記は、簡単なサンプルです。上記をコピペして実行してみるといいでしょう。(経験者であればわかりますが)SwingやAWTのプログラミングに非常に近いです。クライアントサイドのみで処理をするアプリを作成するのであれば、このファイルだけでOKです。
デバッグの方法について
(1)Super Development modeを使おう
通常の実行ボタンを押すと、JavaのコンパイルからJavaScriptの生成といった時間がかかってしまいます。これがGWTの開発の欠点なのですが、GWTにはSuper Development modeと呼ばれるデバッグモードがあります。Eclipseにおいては、デバッグのところに Super Dev Mode というメニューがあります。これを選択してください。
(2)エラーを確認しよう
Development Modeを利用する際、コンパイルが通ったようで画面は真っ白という時がよくあります。それはどこかにエラーがあるので、【構築】でコンパイルしてみましょう。するとDevelopmentModeではわからなかったエラーが出てきます。
参考サイト