MinGW/GCJを使ってみる(SWT編)
SWTは、Eclipseプロジェクトより提供されているJava用のGUIツールキットです。 SWTはSwingのようなPure Javaではなく、OSネイティブAPIを使用しているため、より軽快に動作することと、 プラットフォームネイティブなルック&フィールを実現します。 今回は、GCJで簡単なSWTを利用したネイティブコードの実行ファイルを作成します。
GCJでSWTを利用するためには
ThisIsCoolのGCJのインストール
前回、「MinGW/GCJを使ってみる」でThisIsCoolのGCJを利用しました。 ThisIsCoolで提供されているGCJでは、GCJにjarファイルにSWTが統合されています。 よって、swt.jarをクラスパスに追加することや、swtアーカイブのリンクする必要はありません。
まずは、「MinGW/GCJを使ってみる」を参照して、ThisIsCoolのGCJをインストールします。
SWTのDLLファイル
SWTアプリケーションを実行するには、SWTのDLLファイルが必要になります。
「MinGW/GCJを使ってみる」で gcc40-20051104.tar.bz2 を展開しましたが、 この場合、"thisiscool-gcc\swt\win32\3138" の下にSWTのDLLファイルが存在します。 "swt-win32-3138.dll"がSWTのDLLファイルですので、本ファイルを実行するアプリケーションと同じフォルダに配置するなど、PATHが 通っている場所に配置する必要があります。
コンパイルと実行
JAVAソースの作成
GCJでコンパイルする為、SWTを利用した簡単なサンプルソースを作成します。以下のコードのソースファイル(HelloSWT.java)を適当なフォルダ の下に作成します。
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class HelloSWT { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Hello SWT"); shell.setSize(600, 400); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
JAVAソースのコンパイルと実行
GCJでコンパイルしてみましょう。
DOSプロンプトから、ソースファイルを作成したフォルダに移動し、gcjで作成したソースファイル(HelloSWT.java)をコンパイルし実行ファイル(HelloGCJ.exe)を作成します。
> gcj --main=HelloSWT -o HelloSWT HelloSWT.java -mwindows
前回と異なるのは、-mwindowsが追加されています。 前回はコンソールアプリケーションでしたので-mwindowsの指定はしていませんでしたが、 Windowsアプリケーションの場合は-mwindowsを指定します。
作成したプログラムを実行してみましょう。 作成した"HelloSWT.exe"をダブルクリックします。以下のようなウインドウが表示されます。
(前述した、SWTのDLLファイルを作成したプログラムと同じフォルダか、PATHの通っている場所に配置する必要があります。)