JavaでGUIアプリを書く夢

最近JavaFXが気になっています。

鳴り物入りでJavaが登場した頃「Javaを使えばどんなOSでも動くアプリが作れる!」と思っていました。しかし現実はそんなに甘くなかった。

最初に登場したAWTはGUIパーツがシンプルなものばかりで実用的なアプリを開発するには力不足であることに加え、OSごとのネイティブな見た目を再現するため、開発者が他のOSでどう見えるか予測しづらい、という問題がありました。

その次に登場したSwingは、AWTの拡張として実装されつつも、GUIパーツが豊富で、見た目もどのOSでも同じようにすることができ(ネイティブをシミュレートすることもできる)、一見AWTの問題点を一挙に解決したかに見えました。しかし、重い。ものすごく重い。

その次に登場したSWTは、AWTやSwingとは違う技術で、とても軽快でC++などのネイティブコンパイラで作ったアプリと遜色ない速度を実現しました。が、これはPure Javaじゃないという致命的な問題があり、バイナリそのものは「どんなOSでも動く」わけじゃないという中途半端な代物。Javaの利点を半分殺しているような仕様であるため、他言語でQtなどのクロスプラットフォームGUIツールキットを利用するのと比較してメリットがあるのかよくわからないことになってしまいました。

その後変化が訪れたのはAndroid。JavaVM上で動作するAndroid OSは当然JavaGUIアプリを開発するのがデフォルトです。しかもかなりの数のアプリが作られ大成功を収めていると言ってもいいでしょう。しかし、これはあくまでJavaアプリではなくAndroidアプリ。「どんなOSでも動く」という夢を実現したものではありません。

そして現在、JavaGUIアプリを作る場合の標準になっているのが、JavaFX。今度こそ、JavaGUIアプリが大量生産される時代が来るのでしょうか!?