2012-05-30

EclipseによるGAEを利用しないGWT開発

初歩的な事だけど、ラボでよく勘違いする話なのでメモ書きです。

EclipseでGoogleのWebアプリケーションプロジェクトをつくると、GWTとGAEが有効になります。一般的にGoogleのWebアプリケーションを利用する=GAEを利用するという認識になってるようですが、GoogleのWebアプリケーションプロジェクトではGWTとGAEを利用するかどうか、それぞれ有効/無効の設定ができます。つまり、 GAEを利用しないのであればGAEだけを無効にすればOK。

GoogleのWebアプリケーションでGAEを利用しないってどういうシチュエーションなのか?疑問に思うかもしれませんが、一般的なWebサーバーで動くGWTアプリケーションを開発したい場合です。GWTというのは別にGAE限定ではありませんからね。

GAEを無効にするとどうなるのかというと、今までどおりJettyサーバーが稼働します。GAEを有効にしている時もJettyが立ち上がりますが、Jettyというのは汎用のWebアプリケーションサーバーです。別にGAE用というわけではありません。つまり無効にする事でGAEの制約を受けずにJettyを利用できるということです。

そもそもなぜこの事を記事にしたとかというと、
  • Eclipse上でTomcatを動かしてGWTアプリを作る
というのを本当はやりたかったのです。いちおうこの方法はわかっているのですが、GWTのDevModeとの連携ができずに断念しています。GWTはさすがにDevModeが使えないと使う気になれませんし。

おそらくコンパイルオプションを変えればできそうな気がしてますが、まだ未解決です。現在検討中ですので、方法がわかれば紹介します。

2012-05-29

Java:for-each文を使ってコレクションクラスの探索をラクにする

JavaにおいてListのようなコレクションクラスを探索するときには、下記のようにIteratorを利用するのが一般的でした。
List list= new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
 String result = (String)it.next();
 System.out.println(result);
}
しかし、この方法だとnextで得られる戻り値をキャストしたりするなど面倒です。そこで、Java5.0からは(2008年版からは)foreach構文が定義されました。次のようになります。
List list= new ArrayList();
for(String result:list){
 System.out.println(result);
}
どうでしょうか?このネタはJavaの前々バージョンから採用されたもので今更感があるほど古いです。ただ、C言語に慣れ親しんだ世代では、従来のfor文の構文が親しみやすいということで、本ラボでは特にforeachについては言及してませんでした。が、そろそろforeachも完全に一般化したので、今回改めて取り上げました。