Gentoo Java Anleitung
1.
Was ist Java?
Überblick
Java ist eine Programmiersprache, die von den Ingenieuren von Sun Microsystems
entwickelt wurde. Die Sprache ist objektorientert und dafür entwickelt worden
auf mehreren Plattformen ausführbar zu sein, ohne dass Code erneut kompiliert
werden muss. Auch wenn Java als ein natives Programm kompiliert werden kann,
verdankt es einen großen Teil seiner Beliebheit, neben anderen Funktionen wie
Garbage-Collection, der Portabilität. Um die Plattformunabhängigkeit zu
erreichen übersetzt der Java-Compiler den Java-Quelltext in ein Zwischenprodukt,
den "Java-Bytecode". Dieser Bytecode wird dann von der JRE (Java Runtime
Environment) ausgeführt, also nicht vom Betriebssystem direkt.
Um Java-Bytecode ausführen zu können, muss man eine JRE (Java Runtime
Environment) installiert haben. Eine JRE liefert unter anderem die
Kernbibliotheken, eine plattformabhängige virtuelle Maschine und Plugins für
Browser. Ein JDK (Java Development Kit) fügt Programmiertools, wie z.B. einen
Bytecode Compiler und einen Debugger hinzu.
2.
Bevor Sie anfangen
Bestehende Installation
Für bestehende Installationen, egal was Sie an Java vorher installiert hatten,
folgen Sie bitte dem Java Upgrade
Guide.
Neue Installation
Neue Installationen sollten keine weiteren Vorbereitungen benötigen.
3.
Installation einer Virtual Machine
Die Auswahlmöglichkeiten
Gentoo stellt eine Vielzahl von Laufzeitumgebungen (JREs) und
Entwicklungsbaukästen (JDKs) bereit. Unter den momentanen Alternativen gibt es:
| Anbieter |
JDK |
JRE |
| Suns Java-Kit |
dev-java/sun-jdk |
dev-java/sun-jre-bin |
| Das IBM Java-Kit |
dev-java/ibm-jdk-bin |
dev-java/ibm-jre-bin |
| BEA WebLogics J2SE Development-Kit |
dev-java/jrockit-jdk-bin |
Installation einer/s JRE/JDK
Um das in Ihrem Profil definierte Standard-JDK zu installieren, reicht ein
emerge virtual/jdk. Oder für die Standard-JRE des Profils:
emerge virtual/jre.
Kürzlich hat Sun sein JDK und JRE unter eine andere Lizenz gestellt, die
freundlicher für Linux-Distributionen ist. Dadurch kann Suns Java ab Version
1.5 ohne weiteres Getue installiert werden.
Notiz:
Ein JDK enthält ebenfalls eine JRE. Wenn Sie also ein JDK installieren, brauchen
Sie keine JRE mehr zu installieren.
|
Installation von nicht frei ladbaren VMs
Einige JDKs und JREs verlangen zusätzliche Anstrengungen bevor man sie
installieren kann. Nutzen Sie einfach emerge um diese Pakete wie gewohnt zu
installieren. Die Ebuilds werden Ihnen dann mitteilen, wo und was Sie
herunterladen müssen.
Sie müssen die notwendigen Dateien in das Verzeichnis
/usr/portage/distfiles herunterladen. Sobald dies erledigt ist,
müssen Sie erneut den emerge-Befehl ausführen, damit das JRE/JDK installiert
wird.
4.
Konfiguration der Virtual Machine
Überblick
Gentoo Linux bietet die Möglichkeit verschiedene JDKs und JREs parallel
zu installieren, ohne dass sie Konflikte verursachen.
Mit Hilfe von java-config können sie als root die systemweiten
Java-Vorgaben festlegen. Außerdem hat jeder Nutzer die Möglichkeit durch
java-config seine eigenen Vorgaben einzustellen.
Notiz:
Um die Einstellungen der System- und User-VM zu verändern, kann man auch
eselect verwenden. Lesen Sie dazu eselect java-vm help.
|
Eine Standard Virtual Machine festlegen
Durch den Befehl java-config --list-available-vms wird eine Liste
aller auf Ihrem System verfügbaren JREs und JDKs ausgegeben. Hier ist ein
Beispiel einer solchen Ausgabe:
Befehlsauflistung 4.1: Auflisten vorhandener VMs |
# java-config --list-available-vms
The following VMs are available for generation-2:
1) IcedTea6-bin 1.4.1 [icedtea6-bin]
2) Sun JDK 1.5.0.20 [sun-jdk-1.5]
*) Sun JDK 1.6.0.16 [sun-jdk-1.6]
|
Notiz:
VMs, die als Nur bauen gekennzeichnet sind, können Sicherheitsverwundbarkeiten
enthalten und/oder das Ende ihres Lebenszyklus erreicht haben. Gentoo empfiehlt,
diese VMs nicht als System- oder Benutzer-VM zu setzen. Bitte lesen Sie
Nur bauen-VM für weitere Informationen.
|
Das * zeigt die momentan aktive VM an (System-VM oder User-VM, wenn
gesetzt). Der Text in eckigen Klammern [] ist der Name oder die ID für
die jeweilige VM. Sie müssen diese Angaben (Name oder Nummer)
mit java-config --set-system-vm wie folgt verwenden, um zum Beispiel die
VM des Systems zu setzen:
Befehlsauflistung 4.2: Setzen der System-VM |
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
# java-config --set-system-vm 3
Now using sun-jdk-1.6 as your generation-2 system JVM
|
Als einfacher Benutzer können Sie java-config --set-user-vm ausführen.
Notiz:
Es ist nicht länger nötig das Profil zu sourcen, um Updates an der User-
oder System-VM zu aktivieren.
|
Nur bauen-VM
Einige virtuelle Maschinen sind als Nur bauen gekennzeichnet, da sie
Sicherheitsverwundbarkeiten enthalten und/oder das Ende ihres Lebenszyklus
erreicht haben. Diese virtuellen Maschinen werden von Gentoo nicht automatisch
zum Ausführen von Anwendungen via Gentoo-Launchers verwendet, aber sind
weiterhin für Gentoos Bauumgebung verfügbar, da einige Pakete sie zum Bauen
benötigen. Wir raten dringend davon ab, diese VMs als virtuelle Maschinen für
Ihr System oder für Ihren Benutzer zu setzen, da sie ansonsten auch für das
Ausführen der Dateien /usr/bin/{java,javac,...} verwendet würden
und daher auch von Paketen genutzt würden, die nicht Gentoos Launcher-Skripte
verwenden.
Bevorzugte VM
Während der Installation von Java-Paketen kann und wird die VM je nach
Notwendigkeit umgeschaltet.
Aufgrund der Vielzahl der zur Verfügung stehenden VMs haben wir nicht die
Ressourcen jedes Paket mit jeder VM zu testen und zu verifizieren. Um dennoch
sicherzustellen, dass jedes Paket sauber installiert werden kann, haben wir eine
Liste von standardmäßigen/unterstützten VMs je Architektur definiert. Sie
finden diese Liste in
/usr/share/java-config-2/config/jdk-defaults.conf. Wenn Sie also
ein Java-Paket installieren und dieses feststellt, dass eine der VMs aus dieser
Datei installiert ist, dann wird automatisch diese VM anstatt der System-VM
verwendet.
Das Umschalten der VM zum Installationszeitpunkt wird auch dann benötigt, wenn
Ihre System-VM zum Beispiel auf eine 1.4 VM eingestellt ist, die Installation
aber eine 1.5 VM benötigt. Während des Mergens wird dann die bevorzugte 1.5 VM
verwendet, die Einstellung der System-VM bleibt intakt.
Gentoo wäre nicht Gentoo wenn man diese Vorgabeeinstellungen nicht ändern
könnte. Über die Datei /etc/java-config-2/build/jdk.conf haben Sie
die volle Kontrolle darüber, welche VM verwendet wird. Einige Beispiele:
Befehlsauflistung 4.3: Beispiel /etc/java-config-2/build/jdk.conf |
*=sun-jdk
|
Befehlsauflistung 4.4: Beispiel /etc/java-config-2/build/jdk.conf |
*=sun-jdk-1.5
|
Befehlsauflistung 4.5: Beispiel /etc/java-config-2/build/jdk.conf |
1.3=sun-jdk-1.4 ibm-jdk-bin
1.5=sun-jdk
|
Warnung:
Sie müssen diese Datei nicht editieren. Falls Sie diese Optionen
verändern, um eine nicht unterstützte VM zu verwenden, kann einiges schief
gehen. Fehler, die mit einer nicht unterstützten VM berichtet werden, werden
nicht so hoch prioritisiert wie Fehler innerhalb einer der unterstützten VMs.
|
5.
Compiler
Der Standard Java-Compiler zum Erstellen der Anwendungen ist javac, welcher in
jedem JDK enthalten ist. Zusätzlich zu der Konfigurationsmöglichkeit, welche VM
verwendet werden soll, kann man auch den Compiler festlegen. Im Wesentlichen
legt man einfach eine Liste der bevorzugten Einstellungen in der Datei
/etc/java-config-2/build/compilers.conf an.
Befehlsauflistung 5.1: /etc/java-config-2/build/compilers.conf |
# Falls das ebuild es unterstützt
# wird die Variable COMPILERS von vorne nach hinten durchgegangen
# und der erste Compiler, der installiert ist, verwendet
COMPILERS="ecj-X.Y jikes javac"
|
Nicht alle Compiler unterstützen alle möglichen -target und -source Argumente.
Daher wird jeder Compiler in der Liste überprüft, ob er das gewünschte
-source/-target unterstützt. Javac wird in jedem Fall funktionieren, daher wird
dieser verwendet, falls kein anderer passender Compiler gefunden wird.
Nachfolgend einige weitere Informationen zu den Compilern:
| Name |
Kennung |
Paket |
Beschreibung |
| javac |
javac |
N/A |
Dies ist der Standardcompiler, der verwendet wird; ist in jedem JDK
enthalten.
|
| jikes |
jikes |
dev-java/jikes |
Jikes wurde ursprünglich von IBM entwickelt. Gerüchten zufolge ist er
schneller als javac. Man muss allerdings beachten, dass Jikes etwas
pedantischer ist und unter einigen wenigen Umständen versagt, bei denen
Javac keine Probleme hat. Außerdem wird die Java 1.5 Syntax bisher nicht
unterstützt.
|
| Eclipse Compiler für Java |
ecj |
dev-java/eclipse-ecj |
ECJ ist der Compiler, der von der Eclipse Entwicklungsumgebung verwendet
wird. Der Compiler bietet sehr viele Funktionen und ist ziemlich schnell.
Er unterstützt die Java 1.5 Syntax.
|
6.
Einen Vorgabe-CLASSPATH einrichten
Warnung:
Die Optionen, die in diesem Abschnitt erläutert werden, sollten als veraltet
betrachtet werden und werden voraussichtlich in Zukunft entfallen. Wir raten
dringend davon ab, diese Optionen zu verwenden, da Ihre Java-Projekte bzw.
-Anwendungen am besten ihren eigenen CLASSPATH verwalten sollten. Falls Sie
einen Vorgabe-CLASSPATH einrichten, können sich einige Anwendungen
unvorhersehbar verhalten, weil im CLASSPATH unerwartete Klassen vorgefunden
würden.
|
Einen systemweiten als auch einen Benutzer-spezifischen CLASSPATH kann man auch
mit java-config setzen.
Zunächst sollten Sie sich alle vorhandenen Java-Bibliotheken, die auf Ihrem
System installiert sind und die man in den CLASSPATH aufnehmen könnte, anzeigen
lassen. Hier ist ein Beispiel der Ausgabe:
Befehlsauflistung 6.1: Auflistung der Klassen |
# java-config --list-available-packages
[xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env)
[junit] Simple framework to write repeatable tests (/usr/share/junit/package.env)
[bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env)
[bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env)
[log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env)
...
|
Auch hier sind die Namen in eckigen Klammer ([]) die IDs, die man dem
Befehl java-config --set-system-classpath übergeben muss. Hier ist ein
Beispiel:
Befehlsauflistung 6.2: Setzen des CLASSPATHs |
# java-config --set-system-classpath log4j,xerces-2
|
Notiz:
Das aktuelle Verzeichnis (.) wird nicht Bestandteil des
System-Classpath; dies sollte in Ihrem System-Loginprofil hinzugefügt werden.
|
Sie müssen Ihre Umgebung aktualisieren, indem Sie sich aus- und wieder
einloggen oder indem Sie /etc/profile sourcen.
Für Anwender richtet der Befehl java-config --set-user-classpath die
Datei ~/.gentoo/java-env-classpath ein, die dann vom Shellprofil
geladen werden sollte.
Befehlsauflistung 6.3: Laden des benutzerspezifischen Classpath |
if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
source ${HOME}/.gentoo/java-env-classpath
fi
|
Falls Sie wirklich einen systemweiten Classpath oder eine Vorgabe für alle
Anwender einrichten wollen, dann können Sie so etwas wie das folgende Beispiel
zum Shellprofil hinzufügen. Aber wie gesagt, wir raten davon ab.
Befehlsauflistung 6.4: Setzen des classpath |
# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"
|
7.
Java Browser Plugins
Ein Plugin installieren
Sie können ein Java-Plugin für Ihren Browser installieren, indem Sie eine
Java-VM emergen, wobei das nsplugin Use-Flag gesetzt ist.
Notiz:
nsplugin steht nicht für alle Architekturen zur Verfügung. Überprüfen Sie
verfügbare Plugins für Ihre Architektur indem Sie den Befehl emerge -pv
<java-vm> ausführen.
|
Portage erlaubt es mehrere Versionen von Java-Plugins zu installieren,
allerdings wird nur eines davon von Ihrem Browser verwendet. Sie können die
Liste aller zur Verfügung stehenden Plugins mit dem folgenden Befehl
überprüfen:
Befehlsauflistung 7.1: Anzeigen der verfügbaren Plugins |
# eselect java-nsplugin list
[1] sun-jre-bin-1.6
[2] icedtea6-bin
|
Im folgenden Beispiel wird sun-jre-bin als Browser-Plugin ausgewählt.
Befehlsauflistung 7.2: Auswahl eines Plugins |
# eselect java-nsplugin set sun-jre-bin-1.6
|
Überprüfen Sie, dass das richtige Plugin ausgewählt wurde.
Befehlsauflistung 7.3: Überprüfen des richtigen Plug-Ins |
# eselect java-nsplugin list
[1] sun-jre-bin-1.6 current
[2] icedtea6-bin
|
Auf java.com wird ein Link angeboten, um das installierte
Plugin herauszufinden. Darüberhinaus können Sie mit einem
Mozilla-basierenden Browser über die Eingabe von about:plugins in der
Adresszeile die installierten Plugins überprüfen.
Plugins auf Multilib-Systemen
Falls Sie eine gemischte 64-Bit- und 32-Bit-Multilib-Umgebung verwenden (zum
Beispiel auf einem AMD64) können Sie sowohl 64-Bit- als auch 32-Bit-Java-Plugins
verwenden. Sofern Sie nicht unbedingt 32-Bit-Java-Anwendungen starten müssen,
empfehlen wir Ihnen, 64-Bit-Plugins in 64-Bit-Webbrowsern zu verwenden.
Es sind einige native 64-Bit-Browser-Plugins verfügbar. Das standardmäßige
JDK/JRE-Paar, sun-jdk und sun-jre-bin, beinhaltet Browser-Plugins.
Installieren Sie einfach eines dieser mit aktiviertem nsplugin USE-Flag.
Befehlsauflistung 7.4: Installation eines 64-Bit-Plugins |
# echo "dev-java/sun-jre-bin nsplugin" >> /etc/portage/package.use
# emerge sun-jre-bin
|
Um ein 32-Bit-Plugin in einem 32-Bit-Browser zu verwenden, müssen Sie
emul-linux-x86-java mit aktiviertem nsplugin USE-Flag emergen.
Befehlsauflistung 7.5: Installation eines 32-Bit-Plugins |
# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java
|
Überprüfen Sie als nächstes welche Plugins zur Verfügung stehen:
Befehlsauflistung 7.6: Anzeige der verfügbaren Plugins |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.5
[2] emul-linux-x86-java-1.6
Available 64-bit Java browser plugins
[1] icedtea6-bin
[2] sun-jre-bin-1.6
|
Wählen Sie nun das richtige Plugin für Ihre Browser:
Befehlsauflistung 7.7: Auswahl der Plugins |
# eselect java-nsplugin set 32bit emul-linux-x86-java-1.6
# eselect java-nsplugin set 64bit sun-jre-bin-1.6
|
Überprüfen Sie, ob das richtige Plugin ausgewählt wurde:
Befehlsauflistung 7.8: Überprüfen des richtigen Plugins |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.5
[2] emul-linux-x86-java-1.6 current
Available 64-bit Java browser plugins
[1] icedtea6-bin
[2] sun-jre-bin-1.6 current
|
8.
USE-Flags in Verwendung mit Java
USE-Flags setzen
Für weitere Informationen zu USE-Flags, lesen Sie bitte das USE-Flags
Kapitel des Gentoo Handbuchs.
Die Flags
-
Das Flag java fügt Java-Unterstützung zu einer Vielzahl von
Programmen hinzu.
-
Das Flag nsplugin aktiviert die Unterstützung für Mozilla-basierende
Browser (inklusive Firefox). Sie benötigen dieses Flag, um Java-Applets in
Ihrem Mozilla-basierenden Browser auszuführen.
-
Das Flag source bewirkt, dass eine Zip-Datei des Quellcodes eines
Paketes installiert wird. Dies wird üblicherweise von IDEs verwendet, um den
Quellcode an eine verwendete Bibliothek anzuhängen.
-
Das Flag jce fügt Unterstützung für die Java Cryptography Engine
hinzu.
-
Das Flag doc bewirkt, dass für Javapakete mit Hilfe von javadoc eine
API-Dokumentation installiert wird.
9.
Weiterführende Quellen
Offline-Quellen
- java-config man page
- java-config --help
Online-Quellen
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|