MinGW/GCJを使ってみる
GCJ(GNU Compiler for Java)は、 Javaソースコード(またはバイトコード)からネイティブコードの実行ファイルが生成できるAhead-of-Time(AOT)コンパイラです。
GCC(GNU Compiler Collection)の一部として開発されていています。 Windows環境ではMinGWやCygwinのgcjを利用することができます。
今回はMinGWのGCJを利用します。 しかしながら、MinGWの公式ホームページから取得したGCJそのままでは、 別途、iconv をインストールする必要と、-Dfile.encoding=SJISを指定した場合、Input_SJIS.oとOutput_SJIS.oをリンクしなおす等の 手間がかかることから、使用しません。
ここでは、ThisIsCoolの「GCC/GCJ for MingW」で提供されているGCJを使用します。 より新しいバージョンのgccをパッケージングしたものが提供されています。 GCC/GCJ 4.02以降のバージョンではInput_SJIS.oとOutput_SJIS.oをリンクしなおす必要がありません。
GCJのインストール
GCJの入手
ThisIsCoolの「GCC/GCJ for MingW」で提供されているGCJをダウンロードします。 GCC/GCJ 3.4、GCC/GCJ 4.02、GCC/GCJ 4.2、GCC/GCJ 4.3 とダウンロードできますが、3.4は-Dfile.encoding=SJISを指定した場合、公式ページから提供されるものと同様なので、 GCC/GCJ 4.02をダウンロードします。 本ページより gcc40-20051104.tar.bz2 をクリックしてダウンロードします。(ダウンロード時に拡張子がbz2になるようにしてください)
ダウンロードファイルの解凍
解凍には tar を使用します。 tar は MinGWのダウンロードページ よりMSYSをダウンロードし、インストールすることで使用できます。 MSYSのインストールは「MinGWを使ってみる(2)」を参照してください。
ダウンロードしたフォルダに移動し、以下のコマンドを入力します。
> tar xvfj gcc40-20051104.tar.bz2
カレントのフォルダ下の thisiscool-gcc というフォルダに展開されます。
thisiscool-gcc を適当なフォルダに移動し、thisiscool-gcc の下の gcc-4.0\bin をPATHに追加します。
コンパイルと実行
JAVAソースの作成
GCJでコンパイルする為、サンプルソースを作成します。以下のコードのソースファイル(HelloGCJ.java)を適当なフォルダ の下に作成します。
class HelloGCJ { public static void main(String[] args) { System.out.println("Hello GCJ!"); } }
JAVAソースのコンパイルと実行
GCJでコンパイルしてみましょう。
DOSプロンプトから、ソースファイルを作成したフォルダに移動し、gcjで作成したソースファイル(HelloGCJ.java)をコンパイルし実行ファイル(HelloGCJ.exe)を作成します。
> gcj --main=HelloGCJ -o HelloGCJ HelloGCJ.java
--mainはmainメソッドを持つクラスの名前を指定します。
作成したプログラムを実行してみましょう。
> HelloGCJ Hello,GCJ!
日本語を含む場合のコンパイルと実行
日本語を含む場合、デフォルトではUTF-8で書く必要があります。 SJISで記述したい場合は--encoding=SJISと指定する必要があります。
また、入出力の文字コードをSJISにする場合も明示的に-Dfile.encoding=SJISと 指定する必要があります。
class HelloGCJ { public static void main(String[] args) { System.out.println("ハロー、GCJ!"); } }
上記のような日本語を含むファイルをSJISで作成した場合は、 以下のようにオプションを指定します。
> gcj -Dfile.encoding=SJIS --encoding=SJIS --main=HelloGCJ -o HelloGCJ HelloGCJ.java
作成したプログラムを実行します。
> HelloGCJ ハロー、GCJ!