1. GWTとは何か

GWTは、Javaで書いたコードをJavaScriptへ変換する仕組みを持ったツールです。
やることは単純で、
・JavaでUIを書く
・コンパイルする
・ブラウザで動く
という流れです。
ただし重要なのは、「Javaで書いたものがそのままJavaScriptとして実行される」点です。
2. JavaをJavaScriptに変換するという発想

ここではJavaはあくまで“開発言語”であり、実行時には存在しません。
この構造は、今のTypeScriptとほぼ同じ役割を持っています。
3. コードで見るGWTの動き
実際のコードを見ると、GWTの考え方がかなりはっきりします。
エントリポイント

アプリはonModuleLoad()から始まります。
ブラウザロード時に呼ばれる初期化処理です。
UIの構築
ここでは完全にJavaのUIコードです。
HTMLやDOM操作は出てきません。
イベント処理

クリックイベントもJavaで完結しています。
DOMへの反映
この1行で、UIがブラウザに描画されます。
何が起きているか
このコードは最終的に、
・JavaScriptへ変換される
・DOM操作コードに展開される
という形になります。
つまり開発者はDOMを直接触らず、Javaの抽象レイヤーでUIを扱っていることになります。
4. GWTの構成要素
構成は比較的シンプルです。
・EntryPoint(開始点)
・Widget(UI部品)
・RPC(通信)
・Compiler(変換)
ただし、状態管理やリアクティブな仕組みは含まれていません。
5. 使って分かるメリット
実際に触ると分かるのは、「Javaで完結する」という点です。
・型安全
・IDE補完
・リファクタリングのしやすさ
このあたりは今でも強みです。
また、出力されるJavaScriptは軽量で、ランタイム依存もほぼありません。
6. 実際に感じる制約
一方で、開発体験には制約があります。
まずビルド時間。
・コンパイルに時間がかかる
・小さな変更でも待ち時間が発生する
次にデバッグ。
・本番コードは読みにくい
・Javaとの対応が追いづらい
さらに、現代フロントエンドとのギャップも無視できません。
7. Vaadinとの違いをどう捉えるか

GWTはブラウザ完結型、Vaadinはサーバー依存型です。
8. 今のGWTはどこにいるのか
現在は主流ではありません。
・React / Vueの普及
・TypeScriptの一般化
この影響が大きいです。
ただし、既存システムでは今も使われています。
9. それでも使う場面はあるのか
限定的ではありますが、
・既存資産の活用
・Java中心の開発体制
・SPAとしての性能重視
こういった条件では選択肢になります。
GWTは、Javaでフロントエンドを書くという独自のアプローチを持ちながら、その本質は「開発言語と実行環境を分離するコンパイルモデル」にあります。現在では主流ではないものの、この考え方自体はTypeScriptなどにも受け継がれており、技術的な流れを理解する上で無視できない存在です。特に既存システムの文脈では、今でも現実的な選択肢として残っています。



