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 |
| Das Blackdown Java-Kit |
dev-java/blackdown-jdk |
dev-java/blackdown-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 |
Der Standard für Java 1.4 ist das Blackdown JRE/JDK Paar, da es frei verfügbar
ist ("frei wie Freibier") ohne zusätzliches Registrierungsgetue.
Allgemein sind die JREs/JDKs von Sun, IBM und BEA schneller, allerdings
bedeutet es etwas mehr Arbeit an sie heranzukommen, da es notwendig ist, vor
dem Herunterladen die Lizenzbestimmungen zu lesen und zu akzeptieren. IBM
verlangt zusätzlich eine Registrierung des Nutzers.
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
Wie bereits erwähnt verlangen einige JDKs und JREs zusätzliche Anstrengungen
bevor man sie installieren kann. Nutzen Sie einfach emerge um diese
Pakete zu installieren. Die Ebuilds werden Ihnen dann mitteilen, wo und was man
herunterladen muss.
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) Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2) Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3) Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4) Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5) Kaffe 1.1.7 [kaffe]
*) Sun JDK 1.5.0.08 [sun-jdk-1.5]
|
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 blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
# java-config --set-system-vm 6
Now using sun-jdk-1.5 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.
|
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.4=blackdown-jdk
1.5=sun-jdk
|
Warnung:
Sie brauchen diese Datei nicht zu 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-3.1 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-3.1 |
=dev-java/eclipse-ecj-3.1* |
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.5
[2] blackdown-jre-1.4.2
|
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.5
|
Überprüfen Sie, daß das richtige Plugin ausgewählt wurde.
Befehlsauflistung 7.3: Überprüfen des richtigen Plug-Ins |
# eselect java-nsplugin list
[1] sun-jre-bin-1.5 current
[2] blackdown-jre-1.4.2
|
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
installieren.
Um ein 32-Bit Plugin zu verwenden, müssen Sie emul-linux-x86-java
emergen während das nsplugin USE-Flag aktiviert ist.
Befehlsauflistung 7.4: 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.5: Anzeige der verfügbaren Plugins |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.4.2
[2] emul-linux-x86-java-1.5
Available 64-bit Java browser plugins
[1] blackdown-jdk-1.4.2
[2] blackdown-jre-1.4.2
|
Obwohl Sie einen 32Bit-Browser (z.B. mozilla-firefox-bin) zur Benutzung
Ihres 32Bit-Plugins auswählen müssen, benutzt die 64Bit-Version des
konquerors Ihre Java-VM direkt. Mit diesem ist es möglich
blackdown in der 64Bit-Version zu nutzen; es ist keine weitere
Konfiguration nötig.
Wählen Sie nun das richtige Plugin für Ihren 32Bit-Browser:
Befehlsauflistung 7.6: Auswahl von Plugins |
# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5
|
Überprüfen Sie, ob das richtige Plugin ausgewählt wurde:
Befehlsauflistung 7.7: Überprüfen des richtigen Plugins |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.4.2
[2] emul-linux-x86-java-1.5 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 unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|