Liberica JDK 11 の JavaFX 11 (OpenJFX) で Hello World するを書いて、JavaFX で作ったミニゲームを GWT で Web ブラウザに移植してみるを読んで、GWT ってあったなぁと懐しく思い、Getting Started をやってみたのでメモっとく。
最近の Web アプリケーションで、REST という概念との整合性に疲れてきているので、クライアント開発をする上で GWT って素晴らしいんじゃないかなと思ったりしている。サーバーとブラウザークライアント間の RSocket 通信を Spring Boot と rsocket-js で実装するにも書いたけど、RSocket や gRPC のようなプロトコルの出現を考えると、レガシーながらもクライアントとサーバーの通信を GWT が隠蔽してくれるのはすごい。また、TypeScript のような言語の存在を考えると、GWT の Java から JavaScript へのトランスパイルもすごいことだなぁと。
前提条件
この記事では下記バージョンのツールを使用している。
Tool | Version |
---|---|
SDKMAN! | 5.7.4+362 |
Java | 1.8.0_242 |
Maven | 3.6.3 |
ターミナルで確認すると下記のようになっている。
$ sdk version
SDKMAN 5.7.4+362
$ sdk current java
Using java version 8.0.242.hs-adpt
$ sdk current maven
Using maven version 3.6.3
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)
$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/takuya/.sdkman/candidates/maven/current
Java version: 1.8.0_242, vendor: AdoptOpenJDK, runtime: /Users/takuya/.sdkman/candidates/java/8.0.242.hs-adpt/jre
Default locale: en_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
GWT を Homebrew でインストールする
Homebrew を最新にしてから GWT をインストールする。記事執筆時点では GWT 2.8.2 がインストールされた。
$ brew update
$ brew install gwt
GWT のインストールが完了したら、webAppCreator が使用できることを確認する。
$ webAppCreator -help
Google Web Toolkit 2.8.2
...
webAppCreator で GWT プロジェクトを作成して Hello World する
下記のコマンドで新規 GWT プロジェクトを作成できる。maven
オプションで Maven プロジェクトを作成できる。付与しないと Ant プロジェクトになってしまうので注意する。なお、maven
オプションは非推奨になっており、代わりに templates
オプションを使う場合は -templates maven,sample,readme
で同じ結果が得られる。out
オプションで出力ディレクトリを指定できる。com.example.myapp.MyApp
はモジュール名である。
$ webAppCreator -maven -out myapp com.example.myapp.MyApp
下記のコマンドで実行する。package
を忘れると動作しないので注意すること。僕は最初 README.txt をきちんと読まずにやって動かなくて困った。
$ cd myapp
$ mvn package gwt:devmode
そうすると GWT Development Mode という下記のようなアプリケーションが起動する。

Launch Default Browser ボタンをクリックしてブラウザーで表示すると下記のような画面が自動的にコンパイルされた後に表示される。

Send ボタンをクリックするとサーバーと RPC で通信した結果がダイアログで表示される。

今回は GWT 2.8.2 と Maven で Hello World してみた。ちゃんとした開発環境を構築するとなると、Eclipse + GWT Eclipse Plugin か IntelliJ IDEA Ultimate がいいようだ。Eclipse でも IntelliJ でも開発環境を構築できたので、そういう開発環境の構築方法もいずれ記事にしようと思う。