A.11. Java

Javaprogrammer kan oversættes til almindelig maskinkode under Linux med værktøjet gcc-java.

Det første skridt er at hente jdk-1.2.2-RC4-linux-i386-glibc-2.1.2.sh. Denne pakke kan findes de sædvanlige steder såsom http://sunsite.dk, på http://www.blackdown.org og http://java.sun.com. JDK'en som du skal hente, skal passe til din Linux-distribution. Der er forskellige pakker til netop den version af glibc som du benytter i din distribution. Du kan se hvilken version af glibc du benytter, ved at se hvilken symbolsk henvisning libc.so.6 peger på (enten libc-2.1.x eller libc-2.0.x). Pakken fylder godt 20 Mb.

Du kan installere kommandofortolkerinstallationspakken (ender på .sh), men der findes også almindelige tar og gzip'ede filer. Installation af kommandofortolkerinstallationen foregår ved (se nedenfor vedrørende hvor det kan betale sig at installere det):


hven# cd /usr/local
hven# chmod +x DIN_STI/jdk-1.2.2-RC4-linux-i386-glibc-2.1.2.sh
hven# DIN_STI/jdk-1.2.2-RC4-linux-i386-glibc-2.1.2.sh

Hermed er udviklings- og kørselsmiljøet til Java installeret! Du skal dog gennem et par ekstra skridt for at det virker tilfredsstillende.

Man mangler Zapf Dingbats-skriftsnit i installationen. Disse hentes på http://www.gimp.org/fonts.html. Installation af disse er beskrevet på webstedet. Man skal i korthed hente URW-skriftsnittene urw-fonts.tar.gz. Disse skal gunzip'pes og af-tar'es i X Window systemets skriftsnitskatalog:


[root@beta /root]# cd /usr/X11R6/lib/X11/fonts
[root@beta /usr/X11R6/lib/X11/fonts]# tar xzvf /mnt/cdrom/Java/java3d/linux/urw-fonts.tar.gz
[root@beta /usr/X11R6/lib/X11/fonts]# chown -R root.root

Dernæst skal man ændre sin X Window opsætningsfil. Hvis ens distribution kører med X Window-skriftsnitstjener, så hedder filen /etc/X11/fs/config (Red Hat), ellers skal man rette i /etc/X11/XF86Config (Red Hat) som beskrevet nedenfor (Red Hat 6.x bruger skriftsnitstjener):


        /usr/X11R6/lib/X11/fonts/misc:unscaled,
    /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
    /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
        /usr/X11R6/lib/X11/fonts/URW,
    /usr/X11R6/lib/X11/fonts/misc,
    /usr/X11R6/lib/X11/fonts/Type1,
    /usr/X11R6/lib/X11/fonts/Speedo,
    /usr/share/fonts/default/Type1

Ændringer til X Window Server XF86Config filen er beskrevet på http://www.gimp.org/fonts, og for skriftsnitstjener filen skal fjerde linje med URW-skriftsnittene føjes til filen /etc/X11/fs/config. For at genstarte skriftsnitstjeneren køres programmet xfs med parametren restart i /etc/rc.d/init.d (som brugeren "root"). Næste gang din Linux-maskine starter startes X-skriftsnitstjeneren automatisk med de nye typer.

Nu mangler vi bare at sørge for at dine systemvariable er sat korrekt. Det er specielt stien der skal være sat så den kan inkludere dine kørbare Java-programmer. Normalt behøver man ikke sætte andre systemvariable hvis man har installeret i /usr/local/jdk1.2.2. Kataloget der skal føjes til stien (systemvariablen PATH eller path), er /usr/local/jdk1.2.2/bin. Det er dog en god idé også at sætte JAVA_HOME til /usr/local/jdk1.2.2.

De to vigtigste kørbare filer er javac (oversætteren) og java (som er Javas virtuelle maskine, JVM).

A.11.1. Installation af Java3D

Der findes masser af andre pakker der er interessant til udvikling af Java-programmer. Det er et spørgsmål om hvad man har brug for, og så ellers komme i gang med den. Et interessant valg er Java3D. Det er et meget elegant design af et visualiserings API, så derfor vil jeg kort beskrive hvordan man installerer det, og hvad det kan.

For det første hører Java3D til media-pakkerne som indeholder alt til udvikling af multimedie og Virtual Reality, spil osv. Java3D er en pakke der stiller klasser til rådighed til udvikling af 3-d-visualiseringssystemer. Java3D er et elegant værktøj der skulle stille de fleste 3-d-visualiseringssystem-udviklere tilfreds. Det baserer sig på scenegrafprincippet. Dvs. alle visuelle objekter i en virtuel verden er hængt op i en scenegraf. Der er knuder der kan gruppere dele af det virtuelle univers, knuder der kan lave transformationer på underliggende knuder, knuder der repræsenterer egentlige virtuelle objekter, lys og kameraet (øjenpunktet) osv.

Der skal en hel del til for at installere Java3D på din Linux-maskine. Først og fremmest bygger Java3D på OpenGL. På Linux er den frie udgave af OpenGL et bibliotek kaldet Mesa (http://www.mesa3d.org/). Mesa kan også findes som RPM- og deb-pakke, og Java3D har brug for version 3.1-3 (eller senere). Hvis du kører Red Hat 6.1, er du ude efter filen Mesa-3.1-3rh61.i386.rpm. Du kan vælge også at lægge glut (et bibliotek til at lave menuer og deslige) og Mesas eksempelsamling ind (Mesa-glut-3.1-3rh61.i386.rpm og Mesa-demos-3.1-3rh61.i386.rpm på et Red Hat 6.1-system).

Desværre er det sådan at Mesa lægger OpenGL lib-filerne som libGL.so.xxx, mens Java3d forventer at de hedder libMesaGL.so.xxx. Derfor skal du i /usr/lib lave et ekstra link:


hven# cd /usr/lib
hven# ln -s libGL.so.1.2.0 libMesaGL.so.3

Nu er det så tid til at installere Java3D. Det er ikke så svært. Det vigtigste er at hvis man lægger Java3D samme sted som Java 2 SDK, er det problemfrit, ellers skal man sørge for at sætte systemvariablen CLASSPATH til at inkludere stien til Java3D-filerne.

Filen du skal hente fra http://java.sun.com er java3d1.1.1pre-v1-linux-sdk.tar.bz2. Du kan kun bruge java3D sammen med Java 2 (den der er beskrevet i det foregående).

Dernæst skal du installere den ved hjælp af tar. Inden du gør det, skal du gennem et par skridt for ikke at løbe ind i alt for mange problemer sidenhen. Du vil gerne have Java3D til at ligge sammen med din jdk1.2.2-installation. Problemet er at Java3D-installationen er pakket i et katalog der hedder jdk1.2, derfor skal du sikre dig at /usr/local/jdk1.2/ peger på /usr/local/jdk1.2.2/ før du udpakker Java3D-filen:


hven# cd /usr/local/
hven# ln -s jdk1.2.2 jdk1.2
hven# tar xjvf java3d1.1.1pre-v1-linux-sdk.tar.bz2
...
(vi er her gået ud fra at du lagde Java3D i kataloget /usr/local/). Nu er du kørende med Java3d.

Det er specielt to ting der er lagt ned i din Java-installation. Det er delvist Java-biblioteker i /usr/local/jdk1.2.2/jre/lib/ext og Java3D demo-filer.

Inden vi beskriver et lille programeksempel, vil jeg omtale indlæsningsroutiner til java3d. Det er sådan at det kan være et meget omfattende arbejde og er egentlig imod 3-d-visualiseringsparadigmet at programmere sig til den visuelle verden. Det man bør gøre, er at definere den virtuelle verden i en separat fil i et eller andet format. Der findes til Java3D en lang række indlæsningsroutiner til at læse sådanne filer. Et meget kendt format er VRML som på en måde er internettets foretrukne 3-d virtuelle modelformat. Java kommer ikke med en indlæsningsroutine til VRML, men heldigvis findes den gratis på http://www.vrml.org/. Du kan også hente java3d vrml indlæsningseksempeler i kildetekst. Den Java-jar (Java biblioteksfil) som hedder vrml97.jar, skal lægges ned i /usr/local/jdk1.2.2/jre/lib/ext, så kan man bruge den i forbindelse med udvikling af Java-3-d-programmer der benytter indlæsning af VRML filer.

For eksempler på Java-3-d-programmer henvises der til installationen af Java3d, hvor der er inkluderet 37 programeksempler inkluderende vrml-eksempelprogrammer.

På internettet kan der desuden findes et utal af modeller af visuelle objekter, i alle mulige typer af formatter, herunder VRML.