1. ホーム
  2. java

[解決済み] GWTの最大の落とし穴?[クローズド]

2022-04-13 19:49:16

質問

GWTを使って実装することを選択したプロジェクトの最初/中盤にいます。GWT(およびGWT-EXT)を使用する際に、克服できない大きな落とし穴に遭遇した人はいますか?パフォーマンスの観点からはどうでしょうか?

すでに見聞きしているものでは、以下のようなものがあります。

  • Googleがコンテンツをインデックスできない
  • CSSやスタイリングが不安定な気がする

これらの項目についても、ご意見をお待ちしています。ありがとうございます。

解決方法は?

私はGWTの大ファンですが、確かに多くの落とし穴がありましたが、すべてではないにしろ、ほとんどの場合、克服することができました。

問題点 コンパイル時間が長い。プロジェクトが大きくなるにつれて、コンパイルにかかる時間も長くなります。コンパイルに20分かかったという報告もありますが、私の場合は平均して1分程度です。

解決策 コードを個別のモジュールに分割し、変更されたときだけビルドするように ant に指示します。また、開発中に、1つのブラウザ用にのみビルドすることで、コンパイル時間を大幅に短縮することができます。これは、.gwt.xml ファイルに記述することで実現できます。

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

ここで、gecko1_8 は Firefox 2+、ie6 は IE など。


問題あり。 ホストモードは(少なくともOS Xでは)非常に遅く、JSPやRailsのページなどを編集してブラウザで更新を押したときに得られる「ライブ」な変更には遠く及びません。

解決策 ホストモードにはより多くのメモリを与えることができます(私は通常512Mを取得しました)が、それはまだ遅いです、私はあなたがGWTで十分に良くなると、これを使用することを発見した。大規模な変更を行い、1つのブラウザ用にコンパイルし(一般的には20秒のコンパイル)、ブラウザで更新を押すだけです。

アップデート:GWT 2.0+では、新しい「開発モード」を使用するため、これはもはや問題ではありません。これは基本的に、選択したブラウザで直接コードを実行できることを意味し、スピードの損失はなく、さらにfirebug/inspectなどが可能です。

http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM


問題あり。 GWTのコードはJavaであり、HTMLページのレイアウトとは異なる考え方を持っているため、HTMLのデザインをGWTに取り込むことが難しくなっています。

解決策 これも慣れですが、残念ながらHTMLデザインをGWTデザインに変換するのは、HTMLデザインをJSPページに変換するようなことをするよりも常に遅くなるようです。


問題あり。 GWTは理解するのに少し時間がかかり、まだ主流ではありません。つまり、あなたのチームに加わる開発者やあなたのコードを保守する開発者のほとんどが、ゼロからGWTを学ばなければならないのです。

解決策 GWTが普及するかどうかはまだわかりませんが、採用する人をコントロールできる企業であれば、GWTを知っているか、学びたいと思っている人を常に選ぶことができます。


問題あり。 GWTは、jqueryや単なるjavascriptのようなものと比べると、とてもハンマーに近いものです。JSファイルを含めるだけでなく、それを実現するために多くのセットアップが必要です。

解決策 jqueryのようなライブラリは、それらに適した小規模で単純なタスクのために使用します。AJAXで本当に複雑なものを作りたいときや、RPCメカニズムでデータをやり取りする必要がある場合は、GWTを使いましょう。


問題あり。 GWTのページに情報を入力するために、ページが最初にロードされたときにサーバーコールを行う必要があることがあります。必要なデータを取得する間、ローディング・シンボルが表示されるのは、ユーザーにとって迷惑なことです。

解決策 JSPページの場合、ページはHTMLになる前にすでにサーバーによってレンダリングされているので、実際にすべてのGWTコールをその時点で行い、ページにあらかじめロードしておけば、即座に読み込むことが可能です。詳しくはこちらをご覧ください。

GWTコールの事前シリアライズによるページ読み込みの高速化


ウィジェットのCSSスタイル設定に問題があったことは一度もありませんし、カスタムでもそうでなくても問題ありません。

パフォーマンスに関しては、一度コンパイルされたGWTコードは常に高速で、AJAXコールはページ全体をリフレッシュするよりもほぼ常に小さいことが分かっています。