FreeBSD で JAVA しよう編FreeBSD でも JAVA してみたいと思うのは人情ですね。 我もと思う方はトライしてみましょう。
JAVA コンパイラ/インタプリタを動かすJDK は 1.0.2, 1.1.5, 1.1.6 が kaffe は 0.9.2 が portされています。
JDK-1.0.2
- JDK-1.0.2を動かすには、 FreeBSDのミラーサーバの FreeBSD/ports-current/www/で、jdk.tar.gzと netscape3.tar.gz, javac_netscape.tar.gzを get して、/usr/ports/www/で展開します。 この /usr/ports/www/jdk で、(IP reachableのまま) makeすると、solaris2用JDKの ftp、パッチ当て、Buildを行なってくれますが、 あらかじめ、同ミラーサーバから、 JDK-1_0_2-solaris2-sparc.tar.Zを ftpで拾っておいて、/usr/ports/distfiles/ に置いておくと早いかと思います。 make installしたら、今度は /usr/ports/www/netscape3/ と /usr/ports/www/javac_netscape/ で同じことをすれば、javacを使う準備完了です。
JDK-1.1.5
- FreeBSD用のJDK-1.1.5が公開されており、ports-currentを使うと楽です。
JDK-1.1.6
- 7月末に FreeBSD用の JDK キット が公開されました、私はまだ試しておりませんが、UDP/Multicastソケット、 timezone, sysRmdir()の動作等のバグ修正、KOI8-R, CP866 サポートの他、 libxpg4 をリンクすることで CJK locale(中国語/日本語/韓国語)がサ ポートされているそうなので、日本語の扱いに関しては期待されます。
kaffe-0.9.2.tgz
- Cで書かれた javac互換のコンパイラで、JDKの javacよりはるかに速いです。 FreeBSD-2.2以降用の portがあります。 私は、
#! /bin/shというスクリプトを javacという名前で使っています。 0.9.2 の port を使うと、昔の port と違って、JDKの AWTライブラリ に該当する kaffe-0.9.2-package-javasoft.com.tgz を get してくれるので、JDK を拾う必要が無くなりました。
#export CLASSPATH=/usr/local/share/java/classes.zip
export LD_LIBRARY=/usr/lib:/usr/local/lib:/usr/X11R6/lib
export JAVA_HOME=/usr/local/share/java
kaffe sun.tools.javac.Main $*
guavac-1.2
- C++で書かれた javac です。私は使っていませんが、kaffe同様高速で あると思います。 guavacも port されていますので、興味のある方はお試し下さい。
最新情報は、HotJava/Java 最新情報 や、 sanpei さんの FreeBSD and Java Informationにありますが、 いざ始めるとなかなか勉強が進まないのも常なので、 JAVA House という日本語のメーリングリストに参加するのがお勧めです。ただし、流量も 半端じゃありません。
Linux Emulator で Netscape Navigator/Communicator を動かす方法FreeBSD 上で Java アプレットが動くブラウザは、今のところ Netscape Navigator/Communicator に限られるわけですが、時期によっては、FreeBSD ネイティブな Navigator/Communicator よりも Linux用のバイナリの方が新しい JVM を実装している場合があります。
(例えば 1998年の前半に私は Communicator Preview Release1を使っていました)
そのようなとき FreeBSD-2.2R以降では、 Linux の ELF binary を動かすこと ができます。そのためには linux_lib-2.X を portsまたは packageからイン ストールし、カーネルを Linux Emulator用に再構築しておかなければなりま せん。
カーネルの再構築とLinux Emulatorの修正
まず、カーネルのコンフィグレーションファイルにを入れてカーネルを作り直します。 これは、 Netscape Navigatorに限らず、 Linux Emulatorを使う場合、 こうして作ったカーネルが必須となります。 常時 Linux Emulatorを使う場合は、 /etc/sysconfig (2.2.2R以降では /etc/rcconfig) の中で
options COMPAT_LINUX options SYSVSHM options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging
linux="YES"
とすれば良いのですが、たまにしか使わないなら、スーパユーザになって、
# linuxとすれば、エミュレータが起動されます。エミュレータが起動されているか どうかは、modstatコマンドで判ります。 Linux用の Netscape Navigatorを動かしてみたいなら、# cd /usr/lib ; ln -s /usr/X11R6/lib/X11 ./ # cd /usr ; ln -s X11R6 X386といういんちきをしておくと整合性が取り易いです。 環境変数 MOZILLA_HOME に、異なるバイナリのインストール先を指定す れば、複数の Netscape Navigator/Communicator を使い分けることができます。
起動スクリプトを作る
環境変数 RESOLV_HOST_CONF に、FreeBSDの /etc/host.confでなく、 Linux形式の host.confを設定します。そのため、 /compat/linux/etc/host.conf というファイルを作り、その中に
と書いておきましょう。この hosts, bind の順は /etc/host.confと同 じ順にすれば良く、DNS を立ち上げていれば逆でもかまいませんし、 NIS を使っている場合はそれ(nis)も書いて下さい。 以下は Linux用 Netscape Navigator 4.05を /usr/local/netscape-linux にインストールした場合の起動シェルスクリプトの例です。
order hosts,bind
multi on
CLASSPATHに JDKのクラスライブラリのパスが入っていると、 JAVA Appletが動かなくなり EMT trap errorが出たりすることもあるので、 JDKを入れた人は気をつけましょう。 LD_PRELOADで指定しているのは locale.c をRedHat Linux上で
#! /bin/sh
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/X11R6/lib
export RESOLV_HOST_CONF=/compat/linux/etc/host.conf
unset CLASSPATH
export XCMSDB=/dev/null
export MOZILLA_HOME=/usr/local/netscape-linux
export LD_PRELOAD=/usr/local/netscape-linux/liblocale.so
exec /usr/local/netscape-linux/netscape $@
# gcc -fPIC -shared -Wl -rpath=/usr/X11R6/lib -soname liblocale.so \
としてコンパイルした ELF バイナリ です。chmod a+x liblocale.so してから、これを適当なところに置 いて、LD_PRELOAD すると、Linux用の Communicatorでも FreeBSD上 の XIM から日本語を入力することができます。 環境変数 XMODIFIERS を kinput2 + cannaの場合は、
-o liblocale.so locale.c -L/usr/X11R6/lib -lX11 -lXt
XMODIFIERS='@im=kinput2'
になるように、vjeの場合は
XMODIFIERS=@im=vje
になるように設定することで、CGI の FORM 欄に 日本語入力が可能であることを確認しました。 xwnmo については試していないので不明です。 では、いざ起動してみましょう。スーパユーザになって、
# linux
します。あとはユーザが起動スクリプトをを立ち上げれば OK です。2.2-RELEASE では /etc/sysconfig 内で
linux=YES とするだけでエミュレータが動き、前述のsyslogの修正も不要に なっています。
自作アプレットいずれも JDK-1.0 の頃に作ったものなので、1.0.2以降の機能は一切使ってい ません。
波文字
- 私が初めて作ったもの
Eight Queens
- 縦横斜めに進めるクイーンを、お互いに取られないように 8 個置く古典的なパズル。成功した場合、アプレットから CGI へデー タを渡すことにより記録が残るようになっています。
カラーチャート
- 16 進コード付き色見本(96/04/29更新)です。
ただし、Windows95/WindowsNT用のNetscapeでは、正しくGridLayoutが 表示できないようです。(アプレットのバグではありません) (EUC版/SJIS版パッケージ有、ソース別)
JAVA 関係のリンクアプレットのありかではなく、JDKしたい人のためのリンクです。
- java.sun.COM、日本サン・マイクロシステムズのJavaページ
- White Pager(beta対応)
- 安藤さんのHotJava/Java FAQ 日本語版とHotJava/Java 最新情報
- HotJava本家
- 本家のEmacs Lispディレクトリ
- EmacsのJAVA入力モード
- やさしいJavaプログラミング
- HotJava入門(JIN SATO)
- Gamelan.com とにかくアプレットが山のようにあります。