Java 3D on FreeBSD

Java 3DはJavaで3Dグラフィックスを扱うためのJava拡張APIの一つです。 いわゆる"100% Pure Java"なライブラリではなく、FreeBSD向けのバイナリもないため、今まではFreeBSDネイティブなJavaVM上で使用することができませんでした。

この文書では、linuxpluginwrapperの技術を使ってLinux版Java 3DのバイナリをFreeBSDネイティブなJavaVM上で動かす方法を解説します。

準備

あらかじめ入れておく必要のあるportsは x11/XFree86-4java/jdk14 の2つだけです。 (jdk14のかわりに java/jdk13java/diablo-jdk13 でも大丈夫だと思いますが、試していません。) linux_base, linux-*-jdk, linux_driなどは一切不要です。

あと、必須ではありませんが、DRI(Direct Rendering Infrastructure)を有効にしておくと大幅に描画性能を向上させることができます。 DRI on BSDのページを参考に設定してみてください。glxinfoコマンドを実行して"direct rendering: Yes"と表示されれば、DRIは有効になっています。

Java 3Dのインストール

BlackdownのサイトよりLinux版のJava 3Dを入手します。11月30日現在、Java3D 1.3と1.3.1-betaが公開されていますが、ここでは1.3.1-beta(java3d-sdk-1.3.1-beta-linux-i386.bin)を使ってみることにします。

配布物は自己展開型のシェルスクリプトになっているので、以下のようにしてインストールすることができます。

# cd /usr/local/jdk1.4.2
# sh /path/to/downloaddir/java3d-sdk-1.3.1-beta-linux-i386.bin

linuxpluginwrapperのインストール

linuxpluginwrapper-20031122.tar.gzこのパッチを当ててビルドします。

% tar xzf linuxpluginwrapper-20031122.tar.gz
% cd linuxpluginwrapper-20031122
% patch < ../patch-java3d.diff
% make

作成されたjava3d.soとjava3da.soを/usr/local/lib/pluginwrapper/以下にインストールします。

# mkdir -p /usr/local/lib/pluginwrapper
# cp java3d.so /usr/local/lib/pluginwrapper/
# cp java3da.so /usr/local/lib/pluginwrapper/

/etc/libmap.confの編集

最近のFreeBSDには、/etc/libmap.confという設定ファイルにより動的ライブラリの依存関係を実行時に変更する機能が追加されています。 5.2-BETA以降ならばデフォルトで有効になっており、5.1-RELEASEでも以下のようにすることで有効にすることができます。

# cd /usr/src/libexec/rtld-elf
# make WITH_LIBMAP=yes install

4-stableでもrtld-elfにこのパッチを当ててリビルドすれば/etc/libmap.confが有効になるようです。

/etc/libmap.confを有効してこのサンプルのように記述すれば、全ての準備が完了です。

サンプルコードの実行

Java 3Dのインストールの際、/usr/local/jdk1.4.2/demo/java3d/以下にサンプルコードもインストールされるはずです。 早速これを実行してみましょう。

% cd /usr/local/jdk1.4.2/demo/java3d/HelloUniverse
% java HelloUniverse

回転する立方体が表示されれば成功です。

Java appletが有効になっていれば、mozillaなどのFreeBSDネイティブなブラウザからでもJava 3Dを利用することができるはずです。

謝辞

元ネタであるlinuxpluginwrapperの製作に携われた重村さんをはじめ多くの方々に感謝致します。


back