daybreaksnow's diary

私を私と呼びたい

[GWT]環境構築とサンプル

1.Eclispeのダウンロード

GWTプラグインが3.7までしかサポートしていないので、3.7.2を落とした。
http://archive.eclipse.org/eclipse/downloads/drops/R-3.7.2-201202080800/index.php#EclipseSDK

ついでにEGitプラグインもインストール。
なお、デフォルトで設定されているEGgitの更新サイトだと、3.7にインストールできなかったため、
3.7用のサイトを設定した。
http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3Fhttp://download.eclipse.org/egit/updates-1.3/

2.GWT SDKをダウンロード

最新は2.5.1だが、既存のアプリで2.4.0を使っていたのでgwt-2.4.0.zipを落とした。
http://www.gwtproject.org/versions.html

なお、Eclipseプラグインと一緒にインストールもできる。

3.GWTプラグインのインストール

http://dl.google.com/eclipse/plugin/3.7

GAEへのデプロイはまだ考えてないので、ローカルで動かすための最小構成で。
f:id:daybreaksnow:20131015181606p:plain

GWT SDKのインストールを選択しなくても、すでに入れてあったSDKのパスを自動的に設定してくれていた。

4.サンプルプロジェクトの作成

新規→Google→Web Application Project

サンプルコード生成のチェックをONにして作成。

5.開発モードでの実行

Run as→Web Application
Develop Modeタブが開くので、そのアドレスにアクセスすればOK.
例:http://127.0.0.1:8888/StockWatcher.html?gwt.codesvr=127.0.0.1:9997

開発モードではデバッガでJavaコードを終えるが、本番モード(JavaScript)と挙動が若干異なる場合がある。

6.本番モードでの実行

プロジェクトを右クリック→GoogleGWT Compile→Compile
コンパイルが成功したら、アプリを起動し、開発モードのクエリ文字列以下を削ったアドレスにアクセスすればOK。
例:http://127.0.0.1:8888/StockWatcher.html

なお、本番モードかどうかについては、GWT.isProdMode()メソッドを利用することで判定できる。

7.Eclipse外のサーブレットコンテナでの実行

コンパイル後はプロジェクト内にwarディレクトリが作成されている。
これをtomcatのwebappに入れるなどすれば、そのまま動作する。

8.コンパイル時の設定

コンパイル時のoutputLevelは出力されるJavaScriptの難読化レベルの指定。
Obfuscatedが一番難読化されており、本番環境ではこれを使うべき。

ObfuscatedにしたJavaScriptJavaコードの対応を知るためには、マッピングファイルを見る。
以下のディレクトリに各ブラウザ毎にメソッド名のマッピングが載っている。
war\WEB-INF\deploy\gwtsample\symbolMaps

TODO コンパイル時のLogLevelの設定がどこに影響するか、Log4j等と組み合わせた場合どうなるかは後で調べる。

非同期更新を行うアプリを作成するチュートリアル。

公式:http://www.gwtproject.org/doc/latest/tutorial/gettingstarted.html
日本語訳を行っているブログ:http://blog.kcg.ne.jp/blog/leeway/10143