NetbeansでGWTとGAE

おいらはNetBensでしか使ってないです。セットアップも楽ですし、やっぱりなれたIDEだと開発効率は大きく違いますからね。

ちょっと紛らわしいので補足します。
http://d.hatena.ne.jp/nowokay/20091210#1260398030

NetBeans GAEプラグインでは、サーバーの再起動ができないので、タスクマネージャでプロセスを殺す必要があったのです。


きしださんの設定では再起動が出来なくなるようですが、プラグインいれてそのまま使う分には問題なく再起動できます。TomcatGlassfish等と同じように扱えます。


おいらは常にscriptを生成してブラウザでテストしてます。ただし、毎回コンパイルしていては確かに時間がかかります。それでも16bit時代のコンパイル1回したら数分から数十分待つ時代経験しているのであんまりたいしたことないですけどね。もしミスをしてもコンパイルせずともIDEがエラー箇所は指摘してくれますし。昔はただのテキストエディタでしたから。

でも工夫することによってコンパイル時間を大幅に減らすことが可能です。以下はGWT 1.7での結果です。



たとえば普段コンパイルに8秒くらいかかったとしましょう(実際に手元のマシンではそうです)。


まず最初にコンパイルオプションをかえるのです。たとえばデフォルトでは-Xmx256Mとかかれています。これに-Xms256Mも追加しましょう。これで意外と改善されます。ヒープ拡張は結構時間のかかる処理なのでコンパイル時間が秒単位ならば結構な差が出てます。


続いて、GWT 1.6から投入されたコンパイルのスレッド数がデフォルトで1と設定されていますので、これを自分の環境に合わせます。自分のマシンではCore2Duoですので2スレッドにします。


そして最後。大概テストするときのブラウザは限られていると思います。最終確認するときにはいろんなブラウザで動作確認をする必要がありますがちょっといじって実行。なんてときは大体自分のお気に入りのブラウザを使うはずです。

ならば特定のブラウザのみターゲットにして出力しても問題はないはずです。GWTは複数のブラウザ用に最適化したバイナリを用意します。デフォルトではFirefoxIEOperaChromeSafariをターゲットに最適化します。ブラウザによって得意な命令はちがいますし、独自命令を使うことによって大幅に高速化しすることもあります。これがGWTの高速な理由ですが、コンパイル時間の長さの原因にもつながっています。

たとえばこれをFirefox 3.xに絞ってみましょう。モジュール定義XMLに以下の1行を追加します。

<set-property name="user.agent" value="gecko1_8"/>

これらの最適化をすることによって8秒から4秒になりました。かなり違いますね!

実際に運用する前には対象ブラウザの絞込みを消すように。NetBeansならば対象の行にカーソルがあっていればCTRL+/で丸ごとコメント化のON/OFFが手軽に出来るので覚えておきましょう。

ちなみにserverVMにするとめちゃくちゃ遅くなりますので注意です。


2.0ではまた違った最適化が有効だとは思いますので後で調べます。2.0、ぱっと見たところ便利そうなAPIが増えていてよいですね。

しかし、デフォルトで対応するロケールに日本語が入ってないのが悲しいですね(日本語自体問題なく動きます)。