久々にGWTにふれる

GWTは1.5のときに大幅によくなったので触っていたが、自分以外に誰も触っていないようなのでやめた。かなりすきなプロダクトなんだけどね。

これscriptで全部生成可能ってことはオープンソーシャル、つまりGoogleガジェットやMixiアプリと相性がいいかもしれないな。


とりあえず今の1.7になる過程でかわったところを軽く見てると、1.6でイベント周りが多少改善されたくらいで大きくは変わっていない模様。1.7では主にIE8サポートがついたくらいとのこと。


適当に作成してみて、感覚を多少取り戻したところで、以前やってみたらぜんぜん実装されてなかったGWTCanvasを触ってみた。

まだ全部確認してないけど、実装されてるっぽい。


そのまま実装してもつまらないのでJNSIでイベント類のハンドリングやって、それらしい絵を出してみた。Firefox3とIE6で。違いを吸収するためにjQueryを導入。あいかわらずJSNIGWT側からjavascript側を呼び出すのは簡単だけれども、Javascript側からGWT側を呼び出すのがたるい。

http://shin.cside.com/diary/2009/1124-01.png

まだ、絵を出してみただけであって動くわけではないけどね。というかダブルバッファリングってどうなってるんだっけ。Canvasって。

この絵だと違いはないけど、レンダリング品質は違うね。IEは今はまだVMLのエミュだからいいとしてもCanvasってレンダリングの品質って定義されてるんだろうか?


レンダリング部分やフレームワークはごっそり実装しなおす必要があるけど、ロジックはそのまま使えそう。言語としてJavaが使えるってのは大きいね。そのままブラウザゲーが作れるって事だな。

ただ、GWT側では画像の加工がまったく出来ないのでそのへんはサーバー側でやってもらう必要がある(たとえばダメージを与えたとき白っぽく半透明にするとか、STGのキャラの影を作るとか、テクスチャの部分取出しとか)。GAEだとGAEのAPIを、それ以外ならばJava2Dを使う必要があるために、この辺ラッピングする必要が出てくるかもしれない。といっても、GAEではJPEGPNGでしか変換後の画像が作れないために加工は至難の業。ベースとなる画像はやはりBMPで作ってもらう必要があるようだ。いまのところ32bppしか対応していないけど、24bppや256インデックスカラーも対応すればそれなりに使えるようになるかもしれない。


あと、以前も書いたが、Java>Javascriptへのコンバートにかなりマシンパワーを食うので手軽に作成>実行がまわせないのが痛いか。実行までに5秒くらいかかってると思う。Javaのアプリならば通常コンパイルに1秒あればおわるため、長い長い。この辺はマルチスレッド化しやすい部分だと思うが、対応してるんだろうか。4コアだとさくさくコンパイルが通るとかだと4コアにする意味がでてきていいなぁ。ほとんどのアプリはコア数減らして高クロックのモデルにしたほうが速度は大概上だからねぇ。