今回の目的
Java言語をメインで学習しており、アウトプットで何か作りたいがWEBアプリケーションほど重くなく(特にフロント)、ロジックをメインに検討できるものはないかと考えた所、エンジニアを目指し学習していた頃、VB.NETで電卓の再現に挑戦したがロジックの検討でうまくいかず挫折しており、改めて挑戦しようと思い、今回はUI構築が容易な標準ライブラリのSwingで開発することにしました。またそれらについて備忘録、そして同じように学習している方に向けて記事にすることとしました。

※画像はWindowsの電卓です。
記事の投稿について
記事は以下のPartに分けていく予定です。
Part1. UIの作成
Part2. イベント登録
Part3. 電卓要件の整理
Part4. テスト駆動開発
Part5. コーディング
SwingとJavaFXについて
Swingを紹介する上で触れておく必要がある機能としてJavaFXがある。JavaFXはSwingの後継として登場している為、後継であるJavaFXを採用したほうがよいと思う方も少なくない。今回はSwingの基本性能やJavaFXを採用しない事に焦点をおいて説明します。
Swingについて
Java Swing は Java 標準で提供されている GUI フレームワークであり、Java でデスクトップアプリケーションを作る際に長く利用されてきた技術である。Swing にはボタン、ラベル、テキスト入力、テーブル、リスト、メニュー、タブなど、デスクトップアプリに必要な UI 部品が一通り揃っており、これらはすべて javax.swing パッケージに含まれている。またそれらについてはコードベースでUIの雰囲気を変更できる(Swing UI DesignerというGUIベースで構築することも可能だが、柔軟性が乏しくリッチなUIを構築する場合はコードベースが優位)。また、Swing の多くのコンポーネントは MVC に基づいた設計になっており、データを扱うモデルと表示部分が分離されているため、UI とロジックを分離しやすく、テストや保守がしやすいという利点がある。Swing はイベント駆動で動作し、ボタンのクリックやキー入力などはすべてイベントとして扱われ、リスナーを通じて処理される。Swing は長い歴史を持ち、企業システムやツール系アプリでの利用実績が非常に多く、安定性と互換性の高さから今でも十分に実用的な選択肢となっている。
JavaFXについて
一方で JavaFX は、かつて Java のモダン GUI として期待されていたが、Java 11 以降は JDK から完全に分離され、標準ライブラリではなくなった。つまり JavaFX は追加インストールが必要な外部ライブラリとなり、Java 標準としての位置づけを失ったことになる。標準から外れたという事実は、長期的な保守性や将来のサポートに不安が残るという意味でも大きい。また、現在は Web 技術や他のクロスプラットフォーム UI 技術が急速に発展しており、JavaFX が今後どれだけ投資され続けるのかは不透明である。更新自体は続いているものの、Java の中心的技術として扱われているわけではなく、将来的にどのような扱いになるかは読みづらい状況にある。
Swingを選定する理由
Swing は大きな更新こそないものの、Java SE の一部として今も標準に含まれており、Java が続く限り Swing も維持されるという安心感がある。企業システムやツール系アプリでは安定性が最も重要であり、Swing はレガシーな技術として非常に信頼できる。標準として残り続けているという事実は、実質的に無期限のサポートが約束されているのと同じであり、長期的なプロジェクトにおいて大きなメリットとなる。このような背景から、最新技術としての派手さはないものの、安定性、標準性、互換性、そして長期的な安心感を重視する場合には、Swing を選択することには十分な合理性があると言える。
次回予告
今回は Part0. 技術の紹介をメインに記載しました。
Part.1ではWindows電卓のUIを再現していきたいと思います。