[[Vorlage(InArbeit, Datum, Name)]] * Eine vollständige Befehlsübersicht befindet sich im Wiki unter http://wiki.ubuntuusers.de/Wiki/Syntax * Eine Kopiervorlage für viele Syntaxelemente findet man unter http://wiki.ubuntuusers.de/Vorlage/Schnellstart == Java & Desktop-Effekte == Es kann vorkommen, dass grafische Java-Applikationen nicht korrekt dargestellt werden, wenn die [:Desktop Effekte:] aktiviert sind. Die Applikation wird dabei zwar gestartet, jedoch wird außer einem leeren, grauen Fenster nichts angezeigt. Ruft man die selbe Java-Anwendung auf, wenn die Desktop Effekte deaktiviert sind, so wird auch der Inhalt (Buttons, Eingabefelder, ...) einwandfrei angezeigt. Dieses Problem lässt sich für alle Java Versionen leicht lösen: === Java 6 === Für die neueste Version von Java gibt es einen einfachen Lösungsweg. Dazu öffnet man die Datei '''/etc/environment''' mithilfe eines Editors welcher Root-Rechte hat[4] und fügt am Ende der Datei die folgende Zeile hinzu: {{{ AWT_TOOLKIT="MToolkit" }}} Um die Einstellung zu sofort übernehmen, kann entweder die Umgebungsvariable durch Eingabe von {{{ export AWT_TOOLKIT="MToolkit" }}} sofort gesetzt werden, oder der X-Server mittels [[Vorlage(Tasten, Strg+Alt+BackSpace)]] neugestartet werden. {{{#!vorlage Hinweis Dadurch werden alle laufenden Programme beendet. }}} === Andere Versionen === Das [http://wiki.beryl-project.org/wiki/Java Beryl-Wiki] {en} bietet mehr Information und Lösungswege zu diesem Thema. Sollten alle oben stehenden Lösungen, als auch die Beryl-Wiki nicht weiterhelfen, so gibt es auch andere Wikis und Foren, wo dieses Thema behandelt wird. Die [http://www.google.com/search?q=beryl+java Google-Suche] wohl ist der beste Weg dort hin. [[Anker(Plugin_aktivieren)]] == Java-Plugin für Browser aktivieren == {{{#!vorlage Hinweis Dieses Verfahren ist nur dann notwendig, wenn man Java nicht als fertiges Ubuntu-Paket (mit Browser-Plugin) installiert. }}} Damit die gewünschte Java-Version benutzt werden kann, muss ein Link zu einem entsprechenden Plugin für den verwendeten Browser gesetzt werden. Möglicherweise ist noch das Plugin einer älteren/anderen Java-Version vorhanden. Daher sollte man zunächst das Plugin-Verzeichnis des Browsers überprüfen und veraltete Links löschen. Ein Java Browser-Plugin hat immer die Endung .so (Shared Object), was bedeutet, dass dies eine Programmbibliothek ist, die sich mehrere Programme teilen können. In der Regel heißt das Java-Plugin '''libjavaplugin_oji.so'''. Je nach verwendeter Java-Version (Sun, Blackdown ...) befindet sich das Plugin an anderer Stelle im Dateisystem. Am leichtesten lässt sich der Speicherort mit dem folgenden Befehl im Terminal [3] herausfinden: {{{#!vorlage Befehl update-alternatives --list java }}} Die Ausgabe sieht dann beispielsweise so aus: {{{/usr/bin/gij-wrapper-4.1 /usr/lib/jvm/java-6-sun/jre/bin/java /usr/lib/j2se/1.4/bin/java }}} Der erste Eintrag zeigt den Pfad zum standardmäßig installierten GNU-Java. Die beiden weiteren Pfade zeigen jeweils auf die [#JVM JVM]. Pfad Nummer 2 zeigt auf die JVM von Sun Java 6 und der dritte Pfad steht für die JVM von Blackdown Java. Für den Browser wird aber nicht die JVM, sondern ein Plugin benötigt. Am einfachsten ist es, den [:Dateimanager:] zu öffnen und hier dem angegebenen Pfad zu folgen, bis man auf das Verzeichnis '''plugin''' stößt. Hier befindet sich in der Regel die o.g. Datei. Vollständige Pfade zum Plugin kann man den unten angegebenen Befehlen entnehmen. Möchte man nun eines der Plugins mit dem Browser Firefox verlinken, so muss man zunächst den korrekten Pfad heraussuchen und anschließend mit dem Befehl [:ln:] im Terminal [3] den Link zum Plugin-Verzeichnis des Browsers setzen. Für Sun Java 6 sieht der Link unter Edgy Eft 6.10 so aus: {{{#!vorlage Befehl sudo ln -sf /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox/plugins/ }}} Für Blackdown Java sieht der Link folgendermaßen aus: {{{#!vorlage Befehl sudo ln -sf /usr/lib/j2se/1.4/jre/plugin/i386/mozilla/libjavaplugin_oji.so /usr/lib/firefox/plugins/ }}} Für OpenJDK Java sieht der Link folgendermaßen aus: {{{#!vorlage Befehl sudo ln -sf /usr/lib/jvm/java-6-openjdk/jre/lib/i386/gcjwebplugin.so /usr/lib/firefox/plugins/ }}} Dies sind natürlich nur Beispiele. Bei anderen Versionen von Java und/oder Ubuntu muss der Befehl angepasst werden. [[Anker(Ubuntu64bit)]] == Ubuntu 64 Bit == [[Bild(Wiki/Icons/ubuntu64.png, 80, right)]] Für die Integration von Java in Browsern zur Anzeige von Java-Applets oder Start von Java Web Start Applikationen muss bis dato noch die 32 Bit Version von Java verwendet werden. Dies kann jedoch parallel zur 64 Bit Version erfolgen, d.h. für Java-Anwendungen die nicht im Browser laufen, kann die 64 Bit Version genutzt werden. Eine Möglichkeit ist, auf der Sun [http://java.com/de/download/manual.jsp Java Downloadseite] die aktuelle "Linux (selbst extrahierende Datei)" (nicht RPM) herunterzuladen und auszuführen. Wird man nach dem Zielpfad gefragt, wählt man ein separates (beliebiges) Verzeichnis - so können auch bereits bestehende Java-Versionen nebeneinander installiert werden. Die Konfiguration im Browser ist hier am Beispiel von [:Opera:] gezeigt: im Menü ''"Tools -> Preferences -> Advanced -> Content"'' gibt man mit ''"Java options..."'' den Pfad der zuvor installierten Java-Version an (z.B. '''/home/apps/jre1.5.0_06/lib/i386''') und setzt danach das Häkchen bei ''"Enable Java"''. Nach einem Neustart des Browsers sollten dann Java-Applets funktionieren. [[Anker(Java_Optimierung)]] = Programme beschleunigen = Als Beispielaufruf sei der Befehl {{{#!vorlage Befehl java -jar myFancyGuiApp.jar }}} gegeben. Auf Windows-Systemen wird automatisch die DirectX-Beschleunigung verwendet, aber auf Unix-Systemen leider nicht automatisch die OpenGL-Beschleunigung. Um diese einzuschalten verwendet man den Parameter ''-Dsun.java2d.opengl=true'' (siehe [http://java.sun.com/j2se/1.5.0/docs/guide/2d/flags.html#opengl System Properties for All Platforms] {en} / [http://java.sun.com/j2se/1.5.0/docs/guide/2d/new_features.html#ogl Support for Hardware-Accelerated Rendering Using OpenGL] {en} ): {{{#!vorlage Befehl java -Dsun.java2d.opengl=true -jar myFancyGuiApp.jar }}} Je nach Rechnerarchitektur (z.B. 64bit-System) wird als Standard (siehe [http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html Server-Class Machine Detection] {en} ) die Server-VM verwendet. Um die für Client-Anwendungen optimierte VM zu verwenden, muss man auf solchen Systemen explizit den Parameter ''-client'' angeben: {{{#!vorlage Befehl java -client -jar myFancyGuiApp.jar }}} Es hängt dabei von der verwendeten VM ab, ob eine Client-VM für 64bit verfügbar ist. Suns 5.0 64bit VM scheint noch keine Client-VM zu unterstützen, der Parameter schadet aber nicht. Insofern sollte jede grafische Anwendung mit dem Parameter ''-client'' gestartet werden. Schließlich kann man je nach Anwendung (z.B. Java-Spiele oder andere umfangreichere Applikationen) auch noch Geschwindigkeit herausholen, indem man der Anwendung mehr als die maximalen 64 MB zur Verfügung stellt. Hierzu dient der Parameter ''-Xmx'': {{{#!vorlage Befehl java -Xmx256m -jar myFancyGuiApp.jar }}} Natürlich kann man auch alle miteinander kombinieren: {{{#!vorlage Befehl java -client -Xmx256m -Dsun.java2d.opengl=true -jar myFancyGuiApp.jar }}} Diese und weitere Parameter sind auch noch einmal in den [http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/java.html#options Java options] {en} erläutert. Es gibt noch zahlreiche weitere Parameter, um die Java VM zu tunen, aber die hier vorgestellten sind die einfachsten, welche auch meist die größte Wirkung bringen. Natürlich ist eine spürbare Beschleunigung damit nicht zwingend garantiert, aber man sollte es mal ausprobieren und staunen, warum das nicht als Standard so schnell geht. [[Anker(Versionswahl)]] = Verwendete Java-Version einstellen = Es ist möglich mehrere verschiedene REs und SDKs zu installieren. Welche Version systemweit benutzt wird (z.B. durch Eingabe von "java" in der Shell), kann man mit Hilfe des [:Alternativen-System:Alternativen-Systems] einstellen. Diese Einstellung kann man mit '''java''' für die ''Java-Virtual-Machine'' (in JRE enthalten) und mit '''javac''' für den ''Java-Compiler'' (in JDK/SDK enthalten) vornehmen: {{{#!vorlage Befehl sudo update-alternatives --config java }}} = Problemlöser Startscript = Bei einigen Java-Programmen findet die Java-Umgebung nicht den richtigen Pfad zum Programmverzeichnis. Es kommt dann zu sehr kuriosen Fehlern. Abhilfe schafft hier ein kleines Startscript. Vorraussetzung: Der Ordner mit dem Java-Programm sollte sich direkt im [:Homeverzeichnis:] befinden. Der Startscript sorgt dafür, dass das Programm immer direkt aus dem Programmordner gestartet wird. Der Startscript lässt sich komfortabel einer Desktopverknüpfung oder einem Starter im [:GNOME_Panel:] zuweisen. {{{#!/bin/bash #start.sh - Der Java-Programm-Starter #In den Programmordner wechseln cd ~/javaprgrammordner/ #Java-Programm starten java -jar programmname.jar exit 0 }}} Dieses Script als start.sh direkt in den Java-Programmordner speichern und in der [:Konsole:] mit folgendem Befehl ausführbar machen: {{{#!vorlage Befehl chmod u+x start.sh }}} #tag: Internet, Programmierung