12
10

More than 1 year has passed since last update.

Java GUIの歴史と選択

Last updated at Posted at 2022-03-10

Java言語でデスクトップアプリを開発するとき、GUI開発フレームワークの選択肢は以下の3つがあった。

  • AWT(Abstract Windowing Toolkit)
  • Swing
  • JavaFX

どちらを選ぶべきか迷っていたので、Java GUIの歴史を調べ、選択するための情報をまとめてみた。

GUIの歴史

GUIの出来事
1996 JDK1.0リリース。AWTは標準APIの一部として含まれる。
1996 Netscape社はIFC(Internet Foundation Classes)と呼ばれるGUIライブラリを開発。
1997 Sun Microsystems社とNetscape社は、IFCと他の技術を組み合わせ、Java Foundation Classesを形成する意向を発表した。コードネームはSwing。
1998 JDK1.2リリース。Swingは標準APIの一部として含まれる。
2007 JavaOneでJavaFXが公表された。Adobe Flex、Microsoft Silverlightに続いて3番目のRIAプラットフォームとなる。
2008 JavaFX1リリース。静的型付けされた宣言的言語であるJavaFX Scriptを用いて開発する。
2011 JavaFX2リリース。Javaコードで書けることになり、JavaFX ScriptはOracle社により廃止。
2014 JavaFX8がJDK8に含まれ、バージョン番号もそろえる。
2018 JavaFX11はJDK11に含まれず、OpenJFXを利用することになる。

GUIの選択

GUIを選択するために、それぞれの特徴を確認した。

AWT

AWTは、GUI要素の生成と動作を各ターゲットプラットフォーム(Windows、Linux、Macintoshなど)のネイティブGUIツールキットに委ねる。出来上がったプログラムは、理論上はどのプラットフォームでも、ターゲットプラットフォームの「look-and-feel」で動作させることができる。
しかし、GUI要素はプラットフォームによって動作が微妙に異なることがある。そのため、このアプローチでは、ユーザーに一貫した予測可能な体験を提供することは困難だった。さらに残念なことに、AWTのライブラリには、プラットフォームによって異なるバグが存在していた。これは、「write once, debug everywhere」と揶揄されるものとなった。

Swing

SwingはAWTの完全な代替品ではなく、AWTのアーキテクチャの上に構築されている。
Swingは、より高性能なUIコンポーネントを提供するだけです。Swingのプログラムを書くときは、AWTの基礎、特にイベントハンドリングを使用する。
SwingはUIのすべてのピクセルを描画するため、リリースされた当初はユーザーから「遅い」というクレームがあった。

JavaFX

JavaFXは、FXML(Oracle社が作成したXMLベースのユーザインタフェースマークアップ言語)を使用してGUIの画面のデザインを記述する。動作などの論理的な処理(Javaクラス)と画面デザイン(FXML)を分離することによって、分散開発ができるようになる。
また、FXMLの定義には専用のGUIツールがあるので、画面を感覚的に作成できる。

選択

上記から、AWTはほぼ選択肢から外れることになり、SwingかJavaFXかの二択一になる。
SwingはJDK標準搭載でJava言語で完結できるが、画面デザインの面ではJavaFXの方が有利になる。
今回作成したいデスクトップアプリは複雑な画面を想定していないため、Swingを選択することにした。

参考情報

12
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10