[[Vorlage(Archiviert)]] ##[[Vorlage(Getestet, )]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Alternativen-System: Dem System Programm-Alternativen bereitstellen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(3)]] [http://java3d.java.net/ Java 3D] {en} ist eine Erweiterung für [:Java:] und fügt auf OpenGL basierende 3D-Funktionen hinzu. Dieser Artikel beschreibt allgemein die Installation von Java 3D (bzw. die Open-Source-Variante "3D Graphics API") und im Besonderen die Integration in [:Eclipse:], um eigene Java 3D-Programme schreiben zu können. Das ursprüngliche Java 3D wurde mit Version 1.6.0 ab dem Jahre 2015 nicht mehr weiterentwickelt und ist als veraltet anzusehen. Um mit Java aktuelle 3D Anwendungen zu schreiben ist es empfehlenswert auf die JavaFX-Technologie zu wechseln. = Voraussetzungen = Es wird vorausgesetzt, dass ein [:Java#JDK-SDK:Java Development Kit] (Entwicklungsumgebung) von [:Java/Oracle_Java:Oracle Java] oder [:Java/Installation#OpenJDK:OpenJDK] bereits installiert ist. {{{#!vorlage Hinweis In den Beispielen wird davon ausgegangen, dass das OpenJDK in der Version 7 installiert ist. }}} = Installation = Folgende Pakete werden benötigt: {{{#!vorlage Paketinstallation libjava3d-java, universe, Java 3D API (Java Bibliothek) libjava3d-java-doc, universe, Dokumentation der Java3D API libjava3d-jni, universe, Java3D API (Java Jni Bibliothek) }}} == Manuell == Dabei handelt es sich eigentlich nur um das Entpacken einiger weniger Dateien in die richtigen Verzeichnisse. Zunächst benötigt man von [http://java3d.java.net/binary-builds.html Release Builds] {en} das Archiv '''java3d-1_5_2-linux-i586.zip''' (falls man einen 64-bit-System verwendet: '''java3d-1_5_2-linux-amd64.zip'''). Das Archiv speichert man im Verzeichnis '''/tmp'''. === OpenJDK 7 === Hier wird nun beschrieben, wie man Java 3D bei Verwendung von OpenJDK und in Abhängigkeit von der Systemarchitektur installiert. Die Ordner '''ext/''' und '''i386/''' bzw. '''amd64/''' müssen manuell in '''/usr/lib/jvm/java-7-openjdk-i386/jre/lib''' bzw. '''/usr/lib/jvm/java-7-openjdk-amd64/jre/lib''' erstellt werden. * 32-Bit: {{{#!vorlage Befehl cd /tmp unzip j3d-1_5_2-linux-i586.zip cd j3d-1_5_2-linux-i586 unzip j3d-jre.zip sudo mkdir /usr/lib/jvm/java-7-openjdk-i386/jre/lib/ext sudo mkdir /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386 sudo cp lib/ext/* /usr/lib/jvm/java-7-openjdk-i386/jre/lib/ext sudo cp lib/i386/* /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/ }}} * 64-Bit: {{{#!vorlage Befehl cd /tmp unzip j3d-1_5_2-linux-amd64.zip cd j3d-1_5_2-linux-amd64 unzip j3d-jre.zip sudo mkdir /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext sudo mkdir /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64 sudo cp lib/ext/* /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext sudo cp lib/amd64/* /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/ }}} = Integration in Ubuntu = Um Probleme beim Ausführen von Java-3D-Programmen zu vermeiden, sollte die Standard Java-VM [2] festgelegt werden. Dies erreicht man, indem man im Terminal [1] folgendes eingibt: {{{#!vorlage Befehl sudo update-alternatives --config java }}} Vor einem Test muss der Webbrowser eventuell neu gestartet werden. Für einen ersten Funktionstest von Java 3D kann man diese [http://www.chemgapedia.de/vsengine/info/de/help/requirements/java.html Testseite] {de} aufrufen. Zum Programmieren empfiehlt es sich, den Java-Compiler javac ebenfalls als Standard festzulegen: {{{#!vorlage Befehl sudo update-alternatives --config javac }}} [[Anker(Eclipse)]] = Integration in Eclipse = Man sollte [:Eclipse:] mit Java 3D ausführen, da sich Eclipse damit bedeutend schneller anfühlt und unschöne Fehlermeldungen in Eclipse vermieden werden. Dafür bieten sich zwei Vorgehensweisen an: * Option 1: Man gibt jedes Mal beim Starten von Eclipse die [wikipedia:Java_Virtual_Machine:VM] direkt über den Kommandozeilenparameter `-vm` an. Beispiel für das OpenJDK: {{{#!vorlage Befehl /usr/bin/eclipse -vm /usr/lib/jvm/java-7-openjdk/bin/java }}} * Option 2: Man trägt in die Datei '''/etc/eclipse/java_home''' an erster Stelle die Java-VM/OpenJDK-VM ein. Denn Eclipse verwendet immer die erste funktionierende VM, die es in dieser Liste findet. Dazu öffnet man '''/etc/eclipse/java_home''' in einem Editor mit Root-Rechten [3] und trägt vor allen anderen Einträgen: {{{ /usr/lib/jvm/java-7-openjdk }}} ein. == Java-3D-Dokumentation == {{{#!vorlage Hinweis Dieser Abschnitt betrifft nur die manuelle Installation. }}} Um die in [:Eclipse:] für Java gewohnte kontextsensitive Hilfe auch für Java-3D-Methoden angeboten zu bekommen, muss die Java-3D-Dokumentation und der Java-3D-Quellcode in Eclipse eingebunden werden. Dafür besorgt man sich erst einmal von [http://java3d.java.net/binary-builds.html Release Builds] {en} folgende Dateien: * '''j3d-1_5_2-src.zip''' * '''vecmath-1_5_2-src.zip''' * '''java3d-1_5_2-api-docs.zip''' und speichert sie im Verzeichnis '''/tmp'''. Dann öffnet man ein Terminal [1] und kopiert die Dateien: {{{#!vorlage Befehl cd /tmp sudo cp j3d-1_5_2-src.zip /usr/lib/jvm/java-7-openjdk/ sudo cp vecmath-1_5_2-src.zip /usr/lib/jvm/java-7-openjdk/ sudo unzip /tmp/java3d-1_5_2-api-docs.zip -d /usr/share/doc/ }}} ##Danach sieht das ganze so aus: ## ##|| Archiv || Java 3D || Sun Java 6 || OpenJDK 6 || ##|| '''j3d-1_5_2-src.zip''' || Quellcode || '''/usr/lib/jvm/java-6-sun/''' || '''/usr/lib/jvm/java-6-openjdk/''' || ##|| '''vecmath-1_5_2-src.zip''' || Quellcode || '''/usr/lib/jvm/java-6-sun/''' || '''/usr/lib/jvm/java-6-openjdk/''' || ##|| '''java3d-1_5_2-api-docs.zip''' || API Dokumentation || '''/usr/share/doc/java3d-1_5_1-api-docs''' ##|| '''/usr/share/doc/java3d-1_5_1-api-docs''' || {{{#!vorlage Hinweis Der Quellcode muss nicht entpackt werden. Eclipse kann auch direkt aus den Archiven lesen. Das gilt auch für die API-Dokumentation, allerdings ist es von Vorteil, diese zu entpacken, da sie so einfacher im Webbrowser zu öffnen ist und man einfacher Lesezeichen auf Seiten in der API-Dokumentation setzen kann. }}} Im nächsten Schritt muss man Eclipse diese Dokumentation bekannt machen. Dazu startet man Eclipse und wählt im Hauptmenü ''"Window -> Preferences..."'' aus. Die Einstellungen von Eclipse öffnen sich und unter ''"Java -> Installed JREs"'' findet man die Eclipse bekannten Java-Versionen (JREs). Den gewünschten Eintrag wählt man an und [[Vorlage(Tasten, rmb)]]-klickt auf ''"[Edit...]"''. Jetzt sieht man eine Liste mit den ''"JRE system libraries"''. Darunter sollten sich diese drei Einträge befinden: * `/usr/lib/jvm/java-7-openjdk/jre/lib/ext/j3dcore.jar` * `/usr/lib/jvm/java-7-openjdk/jre/lib/ext/j3dutils.jar` * `/usr/lib/jvm/java-7-openjdk/jre/lib/ext/vecmath.jar` Nun wählt man ''"j3core.jar"'' (''"j3dutils.jar"'', ''"vecmath.jar"'') aus und klickt rechts auf ''"[Javadoc Location...]"''. Dort trägt man den Pfad zur API-Dokumentation ``file:///usr/share/doc/java3d-1_5_2-api-docs`` oder ersatzweise den Link zur Online-API-Dokumentation `http://download.java.net/media/java3d/javadoc/1.5.0-latest/index.html` ein. Dann klickt man für ''"j3core.jar"'' (''"j3dutils.jar"'') rechts auf ''"[Source Attachment...]"''. Dort trägt man den Pfad zum Quellcode (englisch: Sourcecode) `/usr/lib/jvm/java-7-openjdk/j3d-1_5_2-src.zip` ein. Für ''"vecmath.jar"'' trägt man als Quellcodepfad ein: * OpenJDK: `/usr/lib/jvm/java-7-openjdk/vecmath-1_5_2-src.zip` {{{#!vorlage Hinweis Sollte man einen neueren Quellcode verwenden, muss man natürlich den Pfad anpassen. }}} = Performance = Für 3D-Programme ist es außerordentlich wichtig, die Systemressourcen gut auszunutzen. Darum soll dieser Abschnitt dabei helfen, Java-3D-Programme optimal auszuführen. == OpenGL-2D-Beschleunigung == Ob die OpenGL-Beschleunigung für ein laufendes Java-3D-Programm aktiviert ist, lässt sich durch {{{#!vorlage Befehl jinfo -sysprops | grep sun.java2d.opengl }}} herausfinden. Die PID des Java-Programms erfährt man durch: {{{#!vorlage Befehl top -c | grep java }}} {{{#!vorlage Warnung Wenn das Kommando ` jinfo` auf ein Java-3D-Programm angewendet wird, kann das System abstürzen. }}} = Problembehebung = Wenn man eine ATI-Grafikkarte verwendet, erhält man u.U. beim Ausführen von Java-3D-Programmen folgende Warnung: {{{ java java3DProgramm Java 3D WARNING : reported GLX version = 1.2 GLX version 1.3 or higher is required The reported version number may be incorrect. There is a known ATI driver bug in glXQueryVersion that incorrectly reports the GLX version as 1.2 when it really is 1.3, so Java 3D will attempt to run anyway. }}} Wenn das Java-3D-Programm trotzdem ausgeführt wird, kann man diese Fehlermeldung einfach ignorieren. Läuft das Java-3D-Programm aber nicht, dann unterstützt die (wohl ältere) verwendete Grafikkarte bzw. der verwendete Treiber kein [wikipedia:GLX:] 1.3 und muss gegen eine neuere Grafikkarte ausgetauscht werden. Vorzugsweise von Nvidia oder Intel, da diese eine bedeutend bessere Ubuntu-Unterstützung bieten als ATI. = Links = * [http://java3d.java.net/ Java 3D] {en} - Hauptseite des Java-3D-Projekts * [http://www.chemgapedia.de/vsengine/info/de/help/requirements/java.html Java 3D Test] {de} - Zum Überprüfen, ob Java 3D korrekt installiert wurde # tag: Programmierung, Java