プロジェクト

全般

プロフィール

Javaプログラミング デスクトップツールを作る

はじめに

デスクトップ上で動作するプログラム(ちょっとしたツール程度の比較的小さなプログラム)を、Javaで作成することに関連したメモです。
本格的なデスクトップアプリケーションについては本メモの対象外です。

Javaは、Webアプリケーション等のサーバーで動くプログラムを作成するプログラミング言語という認識が多いと思われます。ですが、もともとはデスクトップで動作するプログラムを作成するところから出発しており、Javaの最初のバージョンではGUI、ファイルI/O、ネットワークI/O、スレッド、文字列、日付、基本的なコレクション、設定ファイルといった標準APIが提供されていました。

本メモは、デスクトップ環境をWindowsマシン前提で記述していますが、Java SE標準の機能で作成するのでほとんど変更なく Linux や macOS でも適用できると思われます。

デスクトップツールの要件的なこと

デスクトップツールに求められる要件的なものを列挙しておきます。

  • 配布が簡単
  • 実行が簡単
  • メモリやCPUを喰わない(控え目に使う)
  • 設定が可能(次回起動時に前の設定を覚えている)
  • 削除が簡単
  • GUI

実行形式

デスクトップツールとして配布および実行に適したJavaプログラムの実行形式としては次の2つがあります。

  • 単一の実行可能JARファイル形式
  • 自己完結型

両者を簡単にまとめると次の表になります。

項目 単一実行可能JAR 自己完結型
Java実行環境 予め所定バージョン以上がインストールされていること 不要(自己完結型に含まれる)
インストール方法 ファイルを1つコピーするだけ インストーラーを実行
起動方法 JARファイルを実行(ダブルクリック) スタートメニューまたはデスクトップのショートカットを実行(クリック)
アンインストール方法 JARファイルを削除 コントロールパネルのプログラムアンインストールから指定
配布サイズ ~1MB 20MB強1

1 モジュラー化対応のプログラムを配布する場合

実行可能JARファイル

Javaのクラスファイル群をJARファイルにまとめる際、JARマニフェストにプログラム起動時に呼ぶmainメソッドを持つクラス名を記述しておきます。
実行可能JARファイルは、javaコマンドにjarオプションで指定するほか、Windowsであればダブルクリックで実行可能です。
ただし、実行可能JARファイルを実行するには、あらかじめJava実行環境がインストールされている必要があります。Java実行環境のバージョンは開発時に指定したバージョン以上であることも必要です。

Java SE標準APIだけを利用したプログラムを記述すれば、JARファイル一つだけをコピーすれば実行可能です。
もし、Java SE標準API以外にサードパーティライブラリなどを利用したプログラムを記述すると、作成したJARファイルの他に、利用したサードパーティライブラリを一緒にコピーする必要が生じます2。利用するライブラリはJARマニフェストに相対パスで記述されるので、コピーの際は、パスの関係を維持しておく必要があります。単一のJARファイルで作成したツールに比べ、利用者の手間が増えるので、デスクトップツールとしては単一のJARファイルが適しています。

2 Fat JARと呼ばれる、サードパーティライブラリのJARに含まれる内容をすべてアプリケーションのJARにまとめて配布する方法もあります。

自己完結型

Javaプログラムと、Javaプログラムの実行に必要なJava実行環境をひとまとめにして、OS固有のインストーラー形式に梱包して配布します。配布先のPCにJava実行環境がなくてもJavaプログラムを実行することができます。ただし、実行可能JARファイルに比べると配布サイズは大きくなります。
OS固有の実行ファイル形式からJavaプログラムを実行します。Windows OSの場合、EXEファイルからJavaプログラムが実行されます。
Windows OSの場合、MSI形式のインストーラーもしくはInnoSetupのEXE形式のインストーラーによってインストールすることが可能です。インストーラーからインストールすると、デスクトップおよびスタートメニューにプログラムの起動ショートカットが生成されます。

その他の実行形式

この他にも、アプレット形式、Web Start形式とプログラムの配布がサーバー側で一元化できる便利な形式がありますが、この両者はWebブラウザにプラグインとしてJava Plug-inを入れる必要があります。最近の動向としてWebブラウザはプラグイン機構を廃止しており、Javaもアプレット・Web Startを非推奨としており、利用には制限があります。

プログラムの起動に関して

コマンドラインオプション

設定ファイル

プロパティファイル

リソースバンドル

ログ設定ファイル

環境変数

ユーザー別の設定

Preference API


2年以上前に更新