基本的にあなたはそれを正しく持っており、ほとんど自分で質問に答えました。
Vaadinでは、ユーザーインターフェイスコンポーネントは次の2つの部分で構成されています。
- JDKを使用してコンパイルされたサーバー側の「コンポーネント」
- GWTを使用してコンパイルされたクライアント側の「ウィジェット」
これらの部分はHTTPを介して相互に通信し、必要に応じてそれらの状態を自動的に同期します。サーバー側の部分はユーザーインターフェイスコンポーネントの状態を維持し、クライアント側のウィジェットはその状態をレンダリングします。
アプリケーション開発者は通常、サーバー側のコンポーネントを使用してアプリケーションを構築するだけであり、クライアント側がどのように機能するかを実際に気にする必要はありません。
一般に、Vaadinの新しいコンポーネントは、次の2つの方法で開発できます。
- 既存のコンポーネントを構成する
- GWT / JavaScriptを使用した新しいウィジェットの作成(およびその他のクライアント側の技術)
ここでの最初のメソッドは既存のクラスを使用し、GWTを使用してウィジェットを再コンパイルする必要はありません。アプリケーションコードのみがコンパイルされます(JDKコンパイラを使用)。ただし、2番目のシナリオでは、クライアント側のクラスが変更され、再コンパイルが必要になります。これは、GWTコンパイラが必要な場合です。
GWTでコンパイルされたJavaScriptのモノリシックな性質により(GWTの新しいコード分割機能に関係なく、名前空間はグローバルです)、Vaadinはウィジェットセットの概念を使用します。これは、アプリケーションに必要なすべてのウィジェットを含むGWTモジュールです。つまり、新しい(クライアント側の)ウィジェットをアプリケーションに追加するには、GWTの再コンパイルが必要です。ウィジェットを削除するときにウィジェットセットを再コンパイルして、ウィジェットセットのサイズを最適化することもお勧めします。
GWTのコンパイル手順自体は特別なことではありません。ただし、Vaadin自体には、ウィジェットによって適用および使用されるGWTクラスへの多くの追加、ヘルパー、および回避策が含まれています。
Vaadinアドオンを使用すると、これはすべてはっきりとわかります(http://vaadin.com/directoryを参照)。アドオンも単なるjarファイルであり、新しいクライアント側のウィジェットコードが含まれている場合は、プロジェクトに追加するときにGWTを使用したウィジェットセットのコンパイルが必要です。