「GWT」または「Vaadin」のどちらがアプリケーションを設計するのに適しているかを提案できますか?また、コーディングスタイルの違いは何ですか?
GWTでは、アプリケーションロジックは通常クライアント側で実行されます。データの読み取り/保存が必要な場合にのみサーバーを呼び出します。
Vaadinでは、アプリケーションロジックはサーバー側にあります。通常、クライアント側は、ユーザーとの対話のたびにサーバーを呼び出す必要があります。
GWTの利点:
ブラウザでローカルに実行されるため、アプリロジック(ユーザーインタラクションへの応答)は高速です。また、悪いネットワーク状態には比較的影響を受けません。ネットワークは、(新しいデータの読み取り/保存のために)必要な場合にのみ使用され、ネットトラフィックを節約します(トラフィックの多いサイトにとって重要)。
この点で、Vaadinは遅く、UIの操作に遅れが生じ、ユーザーに迷惑をかけます。ネットワークが悪い場合、これはUIの応答性に表示されます。
Vaadinの利点:
アプリロジックはサーバーで実行されるため、ユーザーが検査することはできません。間違いなく(Vaadin氏によれば)それによりセキュリティが強化されます。
さらにいくつかのポイント:
基本的な違いは、GWTでは、アプリケーションをクライアントコードとサーバーコードに分離する必要があり、Vaadinではそのような区別がないことです。これは、アプリケーションのアーキテクチャに影響します。
GWTクライアントコードでは、Javaでコーディングし、使用可能な言語機能の限定されたサブセット(GWTコンパイラーがJavascriptに変換できるもの)を使用する必要があります。 Vaadinでは、すべてがサーバーで実行されるため、JVM言語でコーディングできます(ScalaでVaadinを使用しています)。これはあなたに関係があるかもしれませんし、そうでないかもしれません。
GWTのコンパイルは非常に遅いですが、開発モードではエミュレーターがあります。これにより、実稼働環境の更新が苦痛になります(私が開発したGWTアプリケーションはかなり大きくなり、現在、コンパイルに約15分かかります)。
サードパーティのウィジェットでGWTを拡張するか、独自のウィジェットを展開するのは非常に簡単です。新しいVaadinウィジェットの作成はより複雑です。
Vaadinのもう1つの利点は、クライアントとサーバー間の通信を設計または実装する必要がないことです。組み込みです。
Vaadinを使用すると、クライアント側で何かをしたいときに組み込みのGWTを使用することもできます。これにより、サーバー側のプログラミングモデルのシンプルさ(通信なし、ブラウザープログラミングの必要なし)と、ブラウザーで何が起こるかを完全に制御できます。
VaadinとGWTの違い:
A)Vaadinには、次のようなサーバー側の開発モデルが含まれています。
B)Vaadinは、高レベルのユーザーインターフェイスコンポーネントの大規模なセットを提供します。 GWTの場合、同等のコンポーネントセットには市販のSencha GXTを使用する必要があります。
C)Vaadinには、アプリケーションから見栄えの良いカスタムテーマを簡単に作成できるSASSベースのValoテーマエンジンが含まれています。 ValoはVaadinの最新テーマです。
D)データバインディング:Vaadinは、任意のウィジェットをデータベース、ファイル、またはサーバー側のその他のものなどのデータソースに直接関連付ける機能を組み込んでいます。これにより、ウィジェットのデフォルトの動作を定義してデータソースに作用することができます。
VaadinはGWTよりもはるかに高度なフレームワークであると信じていますが、クライアント側でパフォーマンスを最適化することになると、独自のコンポーネントを作成しない限り、できることはほとんどありません今働いているmスタッフの90%が魅力として働いていました。そして、いくつかのテーブルの横にイベントのタイムラインを使用する必要がありました。タイムラインに400を超えるイベントを読み込んだとき、初期化がひどく遅いことは言うまでもなく、私のWebページはほとんど使用できませんでした。過去2か月間、コードの最適化を試みてきました。最後に、GWTコンポーネントを使用しました。
ヴァーディンは試していません。私はGWTのファンですが、GWTで提供されるデフォルトのウィジェットセットには少しがっかりしていると言えます。フレームワークを埋めるために SmartGWT のようなものが本当に必要です。
アプリケーションはサーバーからの表示情報を表示する必要があるため、単純なコーディングの主な要件は、フォームとテーブルへの自動データバインディングです。 Vaadinでは、これは数行のコードと同じくらい簡単です。 GWTでは、最初にテーブルマッピングがありません。フォームに関しては、オブジェクトをフォームにマップできますが、そのためには、オブジェクト(およびその中のすべてのオブジェクトに1つ)にいわゆるGWTエディターを実装する必要があります。 Editorは、オブジェクトの表示/変更に使用するフォームの定義に他なりません。全体として、ここには自動化はありません。