「GWT」と「Vaadin」のどちらがアプリケーションを設計するのに適しているか、誰か提案できますか? また、コーディングスタイルの違いは何ですか?
10 に答える
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 の違い:
A) Vaadin には、次のようなサーバー側の開発モデルが含まれています。
- ユーザー インターフェイスに実装する必要があるレイヤーを減らすことで、コード行数を半分に削減します。
- ユーザー インターフェイスに任意の JVM ベースの言語を使用できます - Scala、Groovy
- ユーザー インターフェイス ロジックをサーバーに保持することで、セキュリティを強化します。
- Web サーバーから任意のバックエンド API への同期呼び出しを許可します
- サーバー側アーキテクチャ アプリケーションの UI レイヤー用の標準 Java ライブラリとツールを使用できます。
- Java から JavaScript へのコンパイル手順は必要ありません。GWT プロジェクトでは時間がかかり、ツールが複雑になることがよくあります。代わりに、Vaadin クライアント エンジンを使用できます。
- 追加のコードを必要とせずに、すぐに使用できるサーバー プッシュを提供します
B) Vaadin は、高レベルのユーザー インターフェース コンポーネントの大規模なセットを提供します。GWT の場合、同等のコンポーネント セットに市販の Sencha GXT を使用する必要があります。
C) Vaadin には SASS ベースの Valo テーマ エンジンが含まれており、アプリケーションから見栄えの良いカスタム テーマを簡単に構築できます。Valo は Vaadin の最新のテーマです。
D) データ バインディング: Vaadin には、任意のウィジェットをデータベース、ファイル、またはサーバー側のその他のものなどのデータ ソースに直接関連付ける機能が組み込まれています。これにより、データ ソースに作用するウィジェットのデフォルトの動作を定義できます。
Vaadin を使用すると、クライアント側で何かをしたいときに組み込みの GWT を使用することもできます。これにより、サーバー側のプログラミング モデルが単純になり (通信やブラウザー プログラミングは不要)、ブラウザーで何が起こるかを完全に制御できます。
Vaadin は試していません。私は GWT のファンですが、GWT で提供されるデフォルトのウィジェット セットには少しがっかりしたと言えます。フレームワークを埋めるには、SmartGWTのようなものが本当に必要です。
Vaadin は GWT よりもはるかに高度なフレームワークであると思いますが、クライアント側でパフォーマンスを最適化することになると、独自のコンポーネントを構築しない限り、できることは何もありません (Vaadin の美しさはそこで止まります)。私は今働いています 私が行ったスタッフの 90% はチャームとして働いていました そして、いくつかのテーブルの横にあるイベント タイムラインを使用しなければなりませんでした。タイムラインに 400 以上のイベントをロードしたとき、私の Web ページはほとんど使用できませんでした。この 2 か月間、コードの最適化を試みてきました。最後に、GWT コンポーネントを使用しました。
どのアプリケーションもサーバーからの表示情報を表示する必要があるため、単純なコーディングの主な要件は、フォームとテーブルへの自動データ バインドです。Vaadin を使用すると、これは数行のコードと同じくらい簡単です。GWT では、まずテーブル マッピングがありません。フォームに関しては、オブジェクトをフォームにマップできますが、そのためには、オブジェクト (およびその中のすべてのオブジェクト) に対して、いわゆる GWT エディターを実装する必要があります。エディタは、オブジェクトの表示/変更に使用するフォームの定義に他なりません。全体として、ここには自動化はありません。