Gentoo Logo

Gentoo Java Anleitung

Inhalt:

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] (Nur bauen)
*)      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

(Über den Namen (die bessere Methode))
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
(Über die Nummer)
# 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

(Es soll immer ein sun-jdk verwendet werden, also sun-jdk-1.4 für 1.4,
sun-jdk-1.5 für 1.5 usw.)
*=sun-jdk

Befehlsauflistung 4.4: Beispiel /etc/java-config-2/build/jdk.conf

(Verwende wann immer möglich sun-jdk-1.5, außer wenn eine 1.4 oder 1.3
VM explizit verlangt wird)
*=sun-jdk-1.5

Befehlsauflistung 4.5: Beispiel /etc/java-config-2/build/jdk.conf

# Für 1.3 bevorzuge ich sun-jdk 1.4, aber wenn diese nicht vorhanden ist, benutze ibm-jdk-bin,
# Für 1.5 verwende sun-jdk
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

(Wählen Sie die Plugins für 32-Bit- und 64-Bit-Browser)
# 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



Drucken

Seite aktualisiert 23. Dezember 2009

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieser Leitfaden wird Ihnen Java vorstellen und erklären wie man Java mit Gentoo Linux zusammen verwendet.

Joshua Nichols
Autor

Karl Trygve Kalleberg
Autor

Joshua Saddler
Bearbeiter

Hendrik Brandt
Übersetzer

Lars Weiler
Korrektor

Jan Hendrik Grahl
Übersetzer

Ekki Plicht
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.