デバッグモードでVaadin Startup Speedを改善する方法は?
-
29-09-2019 - |
質問
Vaadinの単純な「Hello World」アプリケーションを作成し、サーバーに展開し、ブラウザにアプリケーションURLを入力する場合、アプリケーションが表示されるまで約5〜10秒待つ必要があります。次のランは高速ですが、再展開またはホットスワップクラスの場合、もう一度待つ必要があります。データベースの起動時間、サーバーの起動時間などに追加すると、時間がかかりすぎます。
このヴァーディンのスタートアップの遅さを排除する方法はありますか?それが重要です。それぞれの余分な遅延が修正+実行+テストプログラミングサイクルをよりイライラさせるため、すべてのコードをユニットテストできるわけではありません。いくつかのことをテストする唯一の方法は、手動Modify+run+テストです。
GWTデバッグモードにも同様の問題が存在します。 VaadinはGWTに基づいているため、おそらくこの遅い理由はVaadinではなくGWTにありますか?
私の環境:Intellij 9 + Tomcat 6 + Windows7 64-Bit + Fast Core 2 Duo
解決
Vaadinアプリケーションが再起動されたときに遅い場合:application.init()メソッドがあまりにも重すぎないことを確認します - データベース接続、多くのデータの読み込みなど。URLパラメーターでVaadinでこのセッションを強制的に再起動できますか?
アプリケーションが再起動されていない場合でもホット展開が遅い場合(UI状態が残っています):これは、Vaadinのクライアント側(GWT)部分と関係があります。キャッシュがどういうわけか完全に無視されているかもしれません。ウィジェットセットオピミー化が役立つ場合があります。
他のヒント
Vaadinはこの時間のほとんどをここでcom.vaadin.terminal.gwt.server.abstractapplicationservlet#servestaticresourcesinvaadin(実際にはvaadin自体ではなくサーブレット容器)をここで過ごします。
Vaadin.jarが大きすぎるためだと思います。
したがって、Vaadin.jarからWebrootにVaadin dirを抽出し、アプリケーションのスタートアップ時間が短縮するだけです。
他の非常に優れた(しかし有料)ソリューションはです http://zeroturnaround.com/jrebel
問題は、すべてのJavaクラスが初めてロードされたことによって引き起こされ、その後の呼び出しはキャッシュクラスを使用できます。
しかし、5〜10秒は、私見ではありません、本当に悪くはありません、私はさらに悪いことです。