JDK 1.2.2 RC4, Java 3D 1.1.1をKondara MNU/Linuxへインストールする

概要

Kondara MNU/Linuxの最新版snapshotにはJDK 1.2.2 RC4のRPMが含まれるので JDKのインストールは楽です。

Java 3D 1.1.1 pre-v1は最新版のMesa 3.1ではうまく動作しません。 Mesa 3.0が必要です。

各ソフトウエアの一次配布先について

本稿で紹介したソフトウエアの一次配布先を書いておきます。
一次配布先が無いものは開発元サイトの ダウンロード情報ページを紹介します。
Linux ディストリビューションに依存したもの(RPMファイル)は そのディストリビューションの一次配布先 またはダウンロード情報ページを書きました。

ソフトウエア ファイル名 バイト数 一次配布先またはダウンロード情報
JDK 1.2.2 RC4 (Kondara snapshot) jdk-1.2.2_RC4-1k1.i586.rpm 18,759,168 http://www.kondara.org/ftplist.html
unixODBC 1.8.3 (Kondara snapshot) unixODBC-1.8.3-0k2.i586.rpm 1,014,311
Java 3D 1.1.1 pre-v1 java3d1_1_1pre-v1-linux-sdk.tar.bz2 2,180,744 http://www.blackdown.org/java-linux/mirrors.html
Mesa 3.0 MesaLib-3.0.tar.gz 1,096,806 http://www.mesa3d.org/download.html
Mesa 3.0デモ MesaDemos-3.0.tar.gz 915,369
shuJIT shujit-0.4.1-bin-linux-glibc21-jdk12.tar.gz 57,718 http://www.shudo.net/jit/dist/

はじめに

Blackdown JDK 1.2.2 RC4, Java 3D 1.1.1 pre-v1を Kondara MNU/Linuxにインストールする方法を説明します。

えんどう は Kondara MNU/Linux 1.0製品版にインストールしました。

Kondara MNU/Linuxについては下記を参照してください。

Kondara
	  MNU/Linux

http://www.kondara.org/

Kondara MNU/Linuxには製品版とフリー版があります。

Kondara MNU/Linuxの製品版とフリー版は次の方法で入手できます。

これを書いている時点 (2000年2月中旬)でも、Java 3DはIntel x86対応の Version 1.1.1 pre-v1しかリリースされていません。
Linux用のJava 3D 1.1.1 pre-v1の稼働環境は次の通りです。

Linux用のJava 3D は、 OpenGL互換のフリーの 3D グラフィクス API である Mesa 上で稼働します。

Java 3D 1.1.1 pre-v1はMesa 3.1には対応していません。 (*)

(*)
Mesa 3.1を使用する場合、 libGL.so.*をlibGL.so.*にシンボリックリンクすれば いちおう使用できます。 ただしテストした範囲ではテクスチャーマッピングが動作しませんでした。

Blackdown JDK, Java 3Dの最新バージョンについては下記を参照してください。

http://www.blackdown.org/

blackdown_kondara.gif

また、既知のバグについての情報は必ず参照してください。

http://www.blackdown.org/java-linux/jdk1.2-status/known-bugs.html

linuxbugs_kondara.gif

本稿では次のソフトウエアのインストールを説明して行きます。

JDK 1.2.2 RC4, unixODBCの入手

Blackdown JDK 1.2.2を入手します。
これを書いている時点では、Blackdown JDK 1.2.2の最新版はRC4です。

Kondara MNU/Linux製品版1.0にはJDKは付属しませんが、 フリー版の最新バージョンであるKondara snapshotには Blackdown JDK 1.2.2 RC4が含まれています。
Kondara snapshot(**) のダウンロード情報は下記を参照してください。

http://www.kondara.org/ftplist.html

(**)
snapshot というディレクトリーがあるわけではありません。
Kondara-1.0, Kondara-Zoo と同じディレクトリー階層にある Kondaraというディレクトリーがsnapshotです。

kondara_snapshot.gif

えんどう がダウンロードしたのは 以下のファイル名とファイルサイズのものです。

jdk-1.2.2_RC4-1k1.i586.rpm 18,759,168バイト
      

JDK 1.2.2はLinux kernel 2.2.x, glibc2.1.2以上で動作します。

Kondara snapshotのJDK 1.2.2はunixODBCに依存しています。 インストールにはunixODBCも必要になります。

unixODBC-1.8.3-0k2.i586.rpm 1,014,311バイト
      

JDK 1.2.2, unixODBCのインストール

JDK 1.2.2, unixODBCをホームディレクトリー$HOMEにダウンロードしてあるものとします。

インストール作業はroot権限で行います。
rootとしてログインするか、 suコマンドで rootユーザーに切替えて作業してください。

次の例では unixODBC-1.8.3-0k2.i586.rpm, jdk-1.2.2_RC4-1k1.i586.rpm をホームディレクトリー$HOMEにダウンロードしています。

$ cd
$ su
Password: 
# rpm -ivh unixODBC-1.8.3-0k2.i586.rpm 
unixODBC                    ##################################################
# rpm -ivh jdk-1.2.2_RC4-1k1.i586.rpm
jdk                         ##################################################
      

JDKの動作テスト

コマンドラインからjavaを実行してみましょう。

$ java -version
java version "1.2.2"
Classic VM (build Linux_JDK_1.2.2_RC4, native threads, sunwjit)
      

今度は、Java 2DのサンプルであるJava2DDemoを実行してみます。

$ cd /usr/lib/java/jdk1.2.2/demo/jfc/Java2D/
$ appletviewer Java2Demo.html 
Warning: Missing charsets in String to FontSet conversion
      

j2demo.png

警告が出ていますが、フォントエラー無く実行できました。

JIT の問題点

JDK 1.2 には JIT コンパイラー sunwjit が含まれています。

Java Platform 2 SDK Version 1.2.2: Known Bugs
http://www.blackdown.org/java-linux/jdk1.2-status/known-bugs.html によれば、
intdoubleの比較演算が正しくないなど、 sunwjitにはまだ若干の問題点があるようです。

この問題点を回避するには JITコンパイラーを使用しないようにするという方法が考えられます。

JITコンパイラーを使用しないようにするには次の2つの方法があります。

別の対処方法として、sunwjit 以外の JIT コンパイラーを使用する方法があります。

えんどう は、首藤一幸さんによるフリーの JIT コンパイラー shuJIT をインストールしました。shuJIT の最新情報については次のサイトを参照してください。

http://www.shudo.net/jit/index-j.html

shuJITの一次配布先は次の通りです。

http://www.shudo.net/jit/dist/

えんどう がダウンロードしたのは以下のファイル名とファイル容量のものです。

shujit-0.4.1-bin-linux-glibc21-jdk12.tar.gz 57,718バイト
      

shuJITにはglibc2.0対応のものと glibc2.1対応のものがあるので注意してください。

shuJITのアーカイブを展開すると、 カレントディレクトリー配下に以下のディレクトリーとファイルが作成されます。

$ tar xvfz shujit-0.4.1-bin-linux-glibc21-jdk12.tar.gz 
shujit/README
shujit/GPL.txt
shujit/libshujit.so
      

shuJIT のインストール方法については、README を必ず参照してください。

えんどう は次の方法でインストールしました。

$ cd shujit
$ su
Password: 

# cp libshujit.so /usr/lib/java/jdk1.2.2/jre/lib/i386/.
      

shuJIT を使うには次の2つの方法があります。

shuJIT の実行を確認してみましょう。

$ java -Djava.compiler=shujit -version
  shuJIT  for Sun JVM/IA-32  Copyright 1998,1999,2000 by SHUDO Kazuyuki
java version "1.2.2"
Classic VM (build Linux_JDK_1.2.2_RC4, native threads, shujit)

えんどう は.bash_profilesで環境変数 JAVA_COMPLIER=shujit を指定しています。

JBuider Java 2 Just-In-Time Complire for Linux

1999年9月に、Borland (INPRISE) から Linux 用の JIT コンパイラー JBuilder Java 2 Just-In-Time Compiler for Linux がリリースされました。 JBuilder のために開発されたもので、かなり高速なようです。 SunのJDK 1.2.2 RC2 for LinuxにはこのJITコンパイラーが 標準添付されています。

JBuilder Java 2 Just-In-Time Compiler for Linuxは

http://www.borland.com/jbuilder/linux

からダウンロードできます。ただし残念なことに、オープンソースではないようです。

native thread の問題点

JDK 1.2.2 RC4では標準で native thread が使用されます。
前のバージョンのJDK 1.2 pre-v2では、 native thread使用時の次のような問題点が報告されていました。
ガベージ・コレクションが動作しない、 JFileChooser でデッドロックが発生する、などです。

SunのJDK 1.2.2 RC2 for Linuxではデフォルトでgreen threadが使用さ れるようになっているようです。
Blackdown JDK 1.2.2 RC4でも native threadの使用により問題が発生するかも知れません。

native threadによる問題をが発生したときには、 green threadを使用するようにしてこの問題を回避します。

green thread を使うには次の2つの方法があります。

えんどうは.bash_profileで環境変数 THREADS_FLAG=greenを設定しています。

Mesa 3.0のインストール

LinuxでJava 3Dを動かすためには、OpenGL互換のグラフィクスAPIであるMesa 3.0が必要です。
Mesaのダウンロード情報は下記を参照してください。

http://www.mesa3d.org/download.html

えんどう がダウンロードしたのは以下のファイル名とファイルサイズのものです。

MesaLib-3.0.tar.gz   1,096,806バイト // Mesa 3.0ソース
MesaDemos-3.0.tar.gz   915,369バイト // Mesa 3.0デモソース
      

まずMesa 3.0、Mesa 3.0デモのソースを展開します。
えんどうは/usr/local/src/に展開しました。

$ su
Password:
# cd /usr/local/src/
# tar xvfz $HOME/MesaLib-3.0.tar.gz
# tar xvfz $HOME/MesaDemos-3.0.tar.gz
      

つぎにmakeを行います。

# cd Mesa-3.0
# make linux-386-elf
      

makeが終了したら、 ヘッダーファイルとライブラリーをコピーします。

# cp -r include/GL /usr/include
# cp lib/* /usr/lib
      

Mesaの動作テスト

Mesaの動作テストをしてみましょう。
Mesaのデモを実行してみます。

$ cd /usr/local/src/Mesa-3.0/demos/
$ ls
Makefile	 gears		  morph3d.c	   reflect	    texcyl
Makefile.cygnus  gears.c	  multiext	   reflect.c	    texcyl.c
bounce		 girl.rgb	  multiext.c	   reflect.rgb	    texobj
bounce.c	 glinfo		  multitex	   renormal	    texobj.c
clearspd	 glinfo.c	  multitex.c	   renormal.c	    trispd
clearspd.c	 glutfx		  osdemo	   spectex	    trispd.c
descrip.mms	 glutfx.c	  osdemo.c	   spectex.c	    winpos
drawpix		 isosurf	  paltex	   stex3d	    winpos.c
drawpix.c	 isosurf.c	  paltex.c	   stex3d.c
gamma		 isosurf.dat	  pointblast	   tessdemo
gamma.c		 morph3d	  pointblast.c	   tessdemo.c

$ ./morph3d
Morph 3D - Shows morphing platonic polyhedra
Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)

  [1]    - Tetrahedron
  [2]    - Hexahedron (Cube)
  [3]    - Octahedron
  [4]    - Dodecahedron
  [5]    - Icosahedron
[SPACE]  - Toggle colored faces
[RETURN] - Toggle smooth/flat shading
 [ESC]   - Quit 
      

mesademo_kondara.gif

Java 3D も面白いですが、C で OpenGL (Mesa) プログラミングも面白いと思います。OpenGL プログラミングについては次の書籍を参考にしてください。

書名: OpenGL プログラミングガイド (第2版)
      OpenGL バ−ジョン 1.1 対応オフィシャルガイド
ISBN: 479529710X
著者: OpenGL ARB (Aachitecture Review Board) 
出版社: アジソン・ウェスレイ・パブリッシャ−ズ・(星雲社刊)
本体価格: ¥12,000-
      

Mesa 環境でのグラフィックス・ハードウエア・アクセラレーションについて

グラフィックス・ボードのハードウエア・アクセラレーションがあると、OpenGL, Mesa などのグラフィックス・パフォーマンスは劇的に向上します。

Mesa 環境でのグラフィックス・ボードのハードウエア・アクセラレーショ ンの対応状況については、Mesa のオフィシャル・サイト http://www.mesa3d.org/ を参照してください。

たとえば現時点では、ftp://ftp.mesa3d.org/mesa/misc/nVidia/ に nVidia 対応のドライバーが登録されています。

3dfx Voodoo ボードへの対応状況は http://www-hmw.caribel.pisa.it/fxmesa/index.shtml にあります。

Windows NT に比べると数は多くありませんが、例えば nVidia は今後積極的に Linux にコミットして行くのではないかと予想しています。

XFree86 4.0 での 3D グラフィックス環境 (GLX, Mesa)

XFree86 の次期バージョンである 4.0 では、Mesa, GLX (X-Winod System の OpenGL 拡張) が XFree86 に取り込まれることになるようです。 たとえば pre 4.0 snapshot である、3.9.16 のリリースノート http://www.xfree86.org/snapshots/3.9.16/RELNOTES2.html#11 には次のような記述があります。

2.9. GLX とダイレクト・レンダリング・インフラストラクチャー(DRI)

Precision Insight 社は、Red Hat と SGI の協力を受けて、
X11 window での 3D レンダリングの ための GLX 拡張の統合を提供しました。
3D レンダリングのコアになるコンポーネントは Mesa ライブラリーです。
SGI は拡張フレームワークのソースをオープンライセンスの下にリリースしました。
これらは 3D ライブラリーとウインドウシステムの融合を真に提供します。
Precision Insight 社はこれらのコンポーネントを XFree86 の X Server に統合し、
ダイレクトレンダリングのためのインフラストラクチャー (DRI) を追加します。
ダイレクトレンダリングは3Dデータをグラフィクスハードウエアに
ダイレクトにシェーディングするための高度に最適化されたパスです。
このリリースは、GMX2000グラフィックカードのための、
アクセラレートされたダイレクトレンダリングのシンプルな実装をdemonstrateします。
将来のリリースでは幅広い3D性能を持つグラフィックディバイスの上で、
ハードウエアアクセラレートされたダイレクトレンダリングが広範にサポートされるでしょう。
      

XFree86 での GLX のハードウエア・アクセラレーションについては、SGI の以下のページが参考になります。

http://reality.sgi.com/ripperda_engr/glx/

Linux の 3D グラフィック環境はますます充実するのではないかと思います。

Java 3Dのインストール

Linux用Java 3Dは、 これを書いている時点でもまだ1.1.1 pre-v1 (Intel x86)が公開されているのみです。

Java 3Dのダウンロード情報は下記を参照してください。

http://www.blackdown.org/java-linux/mirrors.html

えんどう がダウンロードしたのは次のファイル名とファイルサイズのものです。

java3d1_1_1pre-v1-linux-sdk_tar.bz2 2,180,744バイト

以下の例では、ホームディレクトリー $HOME にダウンロードしました。

このファイルはjdk1.2 ディレクトリー配下に格納されているので、 このままではJDK 1.2.2にインストールできません。
このためいったん任意の作業用ディレクトリーに展開します。

$ su
Password:

# cd
# mkdir tmp
# cd tmp
# tar xvfI $HOME/java3d1_1_1pre-v1-linux-sdk_tar.bz2
jdk1.2/
jdk1.2/jre/
jdk1.2/jre/lib/
jdk1.2/jre/lib/i386/
jdk1.2/jre/lib/i386/libJ3D.so
jdk1.2/jre/lib/i386/libj3daudio.so
jdk1.2/jre/lib/ext/
jdk1.2/jre/lib/ext/vecmath.jar
jdk1.2/jre/lib/ext/j3dcore.jar
jdk1.2/jre/lib/ext/j3daudio.jar
jdk1.2/jre/lib/ext/j3dutils.jar
jdk1.2/demo/
jdk1.2/demo/java3d/
jdk1.2/demo/java3d/Appearance/
jdk1.2/demo/java3d/Appearance/AppearanceTest.java
jdk1.2/demo/java3d/Appearance/AppearanceTest.class
jdk1.2/demo/java3d/Appearance/Tetrahedron.java
jdk1.2/demo/java3d/Appearance/Tetrahedron.class
jdk1.2/demo/java3d/AppearanceMixed/
jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed.java
jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed.class
jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed$MyCanvas3D.class
jdk1.2/demo/java3d/AppearanceMixed/Tetrahedron.java
jdk1.2/demo/java3d/AppearanceMixed/Tetrahedron.class
jdk1.2/demo/java3d/AWT_Interaction/
jdk1.2/demo/java3d/AWT_Interaction/AWTInteraction.java
jdk1.2/demo/java3d/AWT_Interaction/AWTInteraction.class
jdk1.2/demo/java3d/Billboard/
jdk1.2/demo/java3d/Billboard/Bboard.java
jdk1.2/demo/java3d/Billboard/Bboard.class
jdk1.2/demo/java3d/Billboard/MouseRotateY.java
jdk1.2/demo/java3d/Billboard/MouseRotateY.class
jdk1.2/demo/java3d/ConicWorld/
jdk1.2/demo/java3d/ConicWorld/ConicWorld.java
jdk1.2/demo/java3d/ConicWorld/ConicWorld.class
jdk1.2/demo/java3d/ConicWorld/FlipCylinder.java
jdk1.2/demo/java3d/ConicWorld/FlipCylinder.class
jdk1.2/demo/java3d/ConicWorld/README
jdk1.2/demo/java3d/ConicWorld/SimpleCylinder.java
jdk1.2/demo/java3d/ConicWorld/SimpleCylinder.class
jdk1.2/demo/java3d/ConicWorld/TexturedCone.java
jdk1.2/demo/java3d/ConicWorld/TexturedCone.class
jdk1.2/demo/java3d/ConicWorld/TexturedSphere.java
jdk1.2/demo/java3d/ConicWorld/TexturedSphere.class
jdk1.2/demo/java3d/FourByFour/
jdk1.2/demo/java3d/FourByFour/BigCube.java
jdk1.2/demo/java3d/FourByFour/BigCube.class
jdk1.2/demo/java3d/FourByFour/Board.java
jdk1.2/demo/java3d/FourByFour/Board.class
jdk1.2/demo/java3d/FourByFour/Canvas2D.java
jdk1.2/demo/java3d/FourByFour/Canvas2D.class
jdk1.2/demo/java3d/FourByFour/Cube.java
jdk1.2/demo/java3d/FourByFour/Cube.class
jdk1.2/demo/java3d/FourByFour/Cylinder.java
jdk1.2/demo/java3d/FourByFour/Cylinder.class
jdk1.2/demo/java3d/FourByFour/FourByFour.java
jdk1.2/demo/java3d/FourByFour/FourByFour.class
jdk1.2/demo/java3d/FourByFour/FourByFour$killAdapter.class
jdk1.2/demo/java3d/FourByFour/ID.java
jdk1.2/demo/java3d/FourByFour/ID.class
jdk1.2/demo/java3d/FourByFour/PickDragBehavior.java
jdk1.2/demo/java3d/FourByFour/PickDragBehavior.class
jdk1.2/demo/java3d/FourByFour/Poles.java
jdk1.2/demo/java3d/FourByFour/Poles.class
jdk1.2/demo/java3d/FourByFour/Positions.java
jdk1.2/demo/java3d/FourByFour/Positions.class
jdk1.2/demo/java3d/FourByFour/README
jdk1.2/demo/java3d/FourByFour/fbf.html
jdk1.2/demo/java3d/FourByFour/instructions.txt
jdk1.2/demo/java3d/FourByFour/scores.txt
jdk1.2/demo/java3d/GearTest/
jdk1.2/demo/java3d/GearTest/Gear.java
jdk1.2/demo/java3d/GearTest/Gear.class
jdk1.2/demo/java3d/GearTest/GearBox.java
jdk1.2/demo/java3d/GearTest/GearBox.class
jdk1.2/demo/java3d/GearTest/GearTest.java
jdk1.2/demo/java3d/GearTest/GearTest.class
jdk1.2/demo/java3d/GearTest/Shaft.java
jdk1.2/demo/java3d/GearTest/Shaft.class
jdk1.2/demo/java3d/GearTest/SpurGear.java
jdk1.2/demo/java3d/GearTest/SpurGear.class
jdk1.2/demo/java3d/GearTest/SpurGearThinBody.java
jdk1.2/demo/java3d/GearTest/SpurGearThinBody.class
jdk1.2/demo/java3d/HelloUniverse/
jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.html
jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.java
jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.class
jdk1.2/demo/java3d/Lightwave/
jdk1.2/demo/java3d/Lightwave/README.txt
jdk1.2/demo/java3d/Lightwave/Viewer.java
jdk1.2/demo/java3d/Lightwave/Viewer.class
jdk1.2/demo/java3d/Lightwave/ballcone.lws
jdk1.2/demo/java3d/Lightwave/greenball.lwo
jdk1.2/demo/java3d/Lightwave/redcone.lwo
jdk1.2/demo/java3d/LOD/
jdk1.2/demo/java3d/LOD/LOD.class
jdk1.2/demo/java3d/LOD/LOD.java
jdk1.2/demo/java3d/Morphing/
jdk1.2/demo/java3d/Morphing/ColorCube.java
jdk1.2/demo/java3d/Morphing/ColorCube.class
jdk1.2/demo/java3d/Morphing/ColorPyramidDown.java
jdk1.2/demo/java3d/Morphing/ColorPyramidDown.class
jdk1.2/demo/java3d/Morphing/ColorPyramidUp.java
jdk1.2/demo/java3d/Morphing/ColorPyramidUp.class
jdk1.2/demo/java3d/Morphing/Morphing.java
jdk1.2/demo/java3d/Morphing/Morphing.class
jdk1.2/demo/java3d/Morphing/MorphingBehavior.java
jdk1.2/demo/java3d/Morphing/MorphingBehavior.class
jdk1.2/demo/java3d/Morphing/Pyramid2Cube.java
jdk1.2/demo/java3d/Morphing/Pyramid2Cube.class
jdk1.2/demo/java3d/Morphing/hand1.obj
jdk1.2/demo/java3d/Morphing/hand2.obj
jdk1.2/demo/java3d/Morphing/hand3.obj
jdk1.2/demo/java3d/ObjLoad/
jdk1.2/demo/java3d/ObjLoad/ObjLoad.java
jdk1.2/demo/java3d/ObjLoad/ObjLoad.class
jdk1.2/demo/java3d/PackageInfo/
jdk1.2/demo/java3d/PackageInfo/PackageInfo.java
jdk1.2/demo/java3d/PackageInfo/PackageInfo.class
jdk1.2/demo/java3d/PickTest/
jdk1.2/demo/java3d/PickTest/ColorCube.java
jdk1.2/demo/java3d/PickTest/ColorCube.class
jdk1.2/demo/java3d/PickTest/ColorPyramidDown.java
jdk1.2/demo/java3d/PickTest/ColorPyramidDown.class
jdk1.2/demo/java3d/PickTest/ColorPyramidUp.java
jdk1.2/demo/java3d/PickTest/ColorPyramidUp.class
jdk1.2/demo/java3d/PickTest/CubeIQA.java
jdk1.2/demo/java3d/PickTest/CubeIQA.class
jdk1.2/demo/java3d/PickTest/GullCG.java
jdk1.2/demo/java3d/PickTest/GullCG.class
jdk1.2/demo/java3d/PickTest/BoltCG.java
jdk1.2/demo/java3d/PickTest/BoltCG.class
jdk1.2/demo/java3d/PickTest/CubeQA.java
jdk1.2/demo/java3d/PickTest/CubeQA.class
jdk1.2/demo/java3d/PickTest/IcosahedronITSA.java
jdk1.2/demo/java3d/PickTest/IcosahedronITSA.class
jdk1.2/demo/java3d/PickTest/IcosahedronTSA.java
jdk1.2/demo/java3d/PickTest/IcosahedronTSA.class
jdk1.2/demo/java3d/PickTest/OctahedronITFA.java
jdk1.2/demo/java3d/PickTest/OctahedronITFA.class
jdk1.2/demo/java3d/PickTest/OctahedronTFA.java
jdk1.2/demo/java3d/PickTest/OctahedronTFA.class
jdk1.2/demo/java3d/PickTest/TetrahedronITA.java
jdk1.2/demo/java3d/PickTest/TetrahedronITA.class
jdk1.2/demo/java3d/PickTest/TetrahedronTA.java
jdk1.2/demo/java3d/PickTest/TetrahedronTA.class
jdk1.2/demo/java3d/PickTest/MorphingBehavior.java
jdk1.2/demo/java3d/PickTest/MorphingBehavior.class
jdk1.2/demo/java3d/PickTest/PickTestBounds.html
jdk1.2/demo/java3d/PickTest/PickTestBounds.java
jdk1.2/demo/java3d/PickTest/PickTestBounds.class
jdk1.2/demo/java3d/PickTest/PickTestGeometry.html
jdk1.2/demo/java3d/PickTest/PickTestGeometry.java
jdk1.2/demo/java3d/PickTest/PickTestGeometry.class
jdk1.2/demo/java3d/PickText3D/
jdk1.2/demo/java3d/PickText3D/PickText3DBounds.java
jdk1.2/demo/java3d/PickText3D/PickText3DBounds.class
jdk1.2/demo/java3d/PickText3D/PickText3DGeometry.java
jdk1.2/demo/java3d/PickText3D/PickText3DGeometry.class
jdk1.2/demo/java3d/PlatformGeometry/
jdk1.2/demo/java3d/PlatformGeometry/SimpleGeometry.java
jdk1.2/demo/java3d/PlatformGeometry/SimpleGeometry.class
jdk1.2/demo/java3d/PureImmediate/
jdk1.2/demo/java3d/PureImmediate/PureImmediate.html
jdk1.2/demo/java3d/PureImmediate/PureImmediate.java
jdk1.2/demo/java3d/PureImmediate/PureImmediate.class
jdk1.2/demo/java3d/ReadRaster/
jdk1.2/demo/java3d/ReadRaster/ReadRaster.java
jdk1.2/demo/java3d/ReadRaster/ReadRaster.class
jdk1.2/demo/java3d/ReadRaster/myCanvas3D.class
jdk1.2/demo/java3d/ReadRaster/myRotationInterpolator.class
jdk1.2/demo/java3d/Sound/
jdk1.2/demo/java3d/Sound/SimplerSound.java
jdk1.2/demo/java3d/Sound/SimplerSound.class
jdk1.2/demo/java3d/Sound/SimpleSounds.java
jdk1.2/demo/java3d/Sound/SimpleSounds.class
jdk1.2/demo/java3d/Sound/MoveAppBoundingLeaf.java
jdk1.2/demo/java3d/Sound/MoveAppBoundingLeaf.class
jdk1.2/demo/java3d/Sound/ReverberateSound.java
jdk1.2/demo/java3d/Sound/ReverberateSound.class
jdk1.2/demo/java3d/Sound/SimpleSoundsBehavior.java
jdk1.2/demo/java3d/Sound/SimpleSoundsBehavior.class
jdk1.2/demo/java3d/Sound/AudioBehaviorMoveOne.java
jdk1.2/demo/java3d/Sound/AudioBehaviorMoveOne.class
jdk1.2/demo/java3d/Sound/AudioReverberate.java
jdk1.2/demo/java3d/Sound/AudioReverberate.class
jdk1.2/demo/java3d/Sound/hello_universe.au
jdk1.2/demo/java3d/Sound/README.release
jdk1.2/demo/java3d/Sound/roar.au
jdk1.2/demo/java3d/Sound/techno_machine.au
jdk1.2/demo/java3d/SphereMotion/
jdk1.2/demo/java3d/SphereMotion/SphereMotion.html
jdk1.2/demo/java3d/SphereMotion/SphereMotion.java
jdk1.2/demo/java3d/SphereMotion/SphereMotion.class
jdk1.2/demo/java3d/SplineAnim/
jdk1.2/demo/java3d/SplineAnim/SplineAnim.java
jdk1.2/demo/java3d/SplineAnim/SplineAnim.class
jdk1.2/demo/java3d/Text2D/
jdk1.2/demo/java3d/Text2D/MoverBehavior.java
jdk1.2/demo/java3d/Text2D/MoverBehavior.class
jdk1.2/demo/java3d/Text2D/Text2DTest.java
jdk1.2/demo/java3d/Text2D/Text2DTest.class
jdk1.2/demo/java3d/Text3D/
jdk1.2/demo/java3d/Text3D/Text3DLoad.java
jdk1.2/demo/java3d/Text3D/Text3DLoad.class
jdk1.2/demo/java3d/TextureTest/
jdk1.2/demo/java3d/TextureTest/TextureImage.java
jdk1.2/demo/java3d/TextureTest/TextureImage.class
jdk1.2/demo/java3d/TickTockCollision/
jdk1.2/demo/java3d/TickTockCollision/Box.java
jdk1.2/demo/java3d/TickTockCollision/Box.class
jdk1.2/demo/java3d/TickTockCollision/CollisionDetector.java
jdk1.2/demo/java3d/TickTockCollision/CollisionDetector.class
jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.html
jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.java
jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.class
jdk1.2/demo/java3d/TickTockPicking/
jdk1.2/demo/java3d/TickTockPicking/Cube.java
jdk1.2/demo/java3d/TickTockPicking/Cube.class
jdk1.2/demo/java3d/TickTockPicking/PickHighlightBehavior.java
jdk1.2/demo/java3d/TickTockPicking/PickHighlightBehavior.class
jdk1.2/demo/java3d/TickTockPicking/Tetrahedron.java
jdk1.2/demo/java3d/TickTockPicking/Tetrahedron.class
jdk1.2/demo/java3d/TickTockPicking/TickTockPicking.java
jdk1.2/demo/java3d/TickTockPicking/TickTockPicking.class
jdk1.2/demo/java3d/VirtualInputDevice/
jdk1.2/demo/java3d/VirtualInputDevice/ButtonPositionControls.class
jdk1.2/demo/java3d/VirtualInputDevice/ButtonPositionControls.java
jdk1.2/demo/java3d/VirtualInputDevice/HelloUniverse.class
jdk1.2/demo/java3d/VirtualInputDevice/HelloUniverse.java
jdk1.2/demo/java3d/VirtualInputDevice/PositionControls.class
jdk1.2/demo/java3d/VirtualInputDevice/PositionControls.java
jdk1.2/demo/java3d/VirtualInputDevice/RotationControls.class
jdk1.2/demo/java3d/VirtualInputDevice/RotationControls.java
jdk1.2/demo/java3d/VirtualInputDevice/SensorBehavior.class
jdk1.2/demo/java3d/VirtualInputDevice/SensorBehavior.java
jdk1.2/demo/java3d/VirtualInputDevice/VirtualInputDevice.class
jdk1.2/demo/java3d/VirtualInputDevice/VirtualInputDevice.java
jdk1.2/demo/java3d/VirtualInputDevice/WheelControls.class
jdk1.2/demo/java3d/VirtualInputDevice/WheelControls.java
jdk1.2/demo/java3d/geometry/
jdk1.2/demo/java3d/geometry/p51_mustang.obj
jdk1.2/demo/java3d/geometry/galleon.obj
jdk1.2/demo/java3d/images/
jdk1.2/demo/java3d/images/apimage.jpg
jdk1.2/demo/java3d/images/bg.jpg
jdk1.2/demo/java3d/images/earth.jpg
jdk1.2/demo/java3d/images/stone.jpg
jdk1.2/demo/java3d/images/ttimage.jpg
jdk1.2/java3d-utils-src.jar
jdk1.2/README.Java3D-jdk
jdk1.2/README.Java3D.linux
jdk1.2/LICENSE.Java3D
      

つぎに、作業用ディレクトリーに出来たjdk1.2 配下のファイルを/usr/lib/java/jdk1.2.2/ にコピーします。

# cp -r jdk1.2/* /usr/lib/java/jdk1.2.2/.
      

Java 3Dの実行テスト

Java 3Dのデモを実行してみます。

$ cd /usr/lib/java/jdk1.2.2/demo/java3d/TextureTest/
$ java TextureImage ../images/bg.jpg
      

TextureTest_kondara.gif

Win32 では、ガベージコレクションのときアニメーションが一瞬止まって 見えるという現象がありましたが、Linux ではこの現象はほとんど気にな りません。
Linux用のJava 3Dの完成度はかなり高いと思います。