javaで遊ぶ

debian 5.0 (lenny) の gcc-4.3 GNU Compiler Collection から java が使えるようになりました。遊んでみます。

環境準備

PC側の環境準備

# apt-get install gcj-4.3 gij-4.3
# apt-get install gcj gij

SH4側の環境構築

  • DebianSH debian lenny が起動できるようにしておく
# apt-get install gcj-4.3 gij-4.3
# apt-get install gcj gij

Javaで遊ぶ

開発PCにて Hello.java ソースコードを用意する

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

コンパイルする

開発PCにて
$ gcj -O2 -C Hello.java
$ ls -l
-rw-r--r-- 1 ebihara ebihara 416 May 24 02:48 Hello.class
-rw-r--r-- 1 ebihara ebihara 110 May 24 02:32 Hello.java

出来上がった Hello.class が javaバイナリー

PCで動かしてみる

$ gij Hello
Hello World!

SH4で動かしてみる

sh4マシンに Hello.java をコピーし、sh4マシンにて
$ gij Hello
Hello World!

動いた

JIT コンパイラとして

Just in time コンパイラとして動かしてみます。
コンパイル済みキャッシュは $HOME/gcj-cache に保存されるとします。

  • /usr/local/bin/jit スクリプトを用意します。
    #!/bin/sh
    GCJ=/usr/bin/gcj
    CACHEDIR=$HOME/gcj-cache
    OPT=-O2
    
    if [ ! -d $CACHEDIR ]; then
            mkdir -p $CACHEDIR
    fi
    
    gij -Dgnu.gcj.jit.compiler=$GCJ -Dgnu.gcj.jit.cachedir=$CACHEDIR -Dgnu.gcj.jit.options=$OPT $*
実行属性を付けておきます
# chmod +x /usr/local/bin/jit

timeを頭につけて実行時間を測定します

# time jit Hello
Hello World!
real    0m8.773s      (一回目 約8秒)
# time jit Hello
Hello World!
real    0m3.300s      (二回目 約3秒)

問題点

いろいろありそうですが(汗

  • 遅い
    (Helloだけで3秒)
  • ファイルサイズ・メモリーサイズが大きい
    必ず /usr/lib/libgcj.so.90.0.0 がリンクされます。これがインタープリター本体で、ファイルサイズが37Mバイトあります。CAT760の内蔵FLASH ROMには収まりませんのでCFカードなどのストレージが必要になります。また同メモリー(RAM)を消費します。

関連

Last-modified: 2010-05-24 (月) 16:07:43 (4163d)