Java/de

Diese Seite gibt eine Einführung in Java und erklärt die Nutzung von Java unter Gentoo.

Übersicht
Java ist eine Programmiersprache die von Sun Microsystems entwickelt wurde. Die Sprache ist objektorientiert. Javaprogramme sind auf verschiedenen Platformen lauffähig, ohne das sie neu kompiliert werden müssen. Es ist zwar möglich Javacode für spezielle Platformen zu kompilieren, aber gerade die Portabilität ist, neben etwa dem Garbage Collector, ein Grund für Javas Popularität. Um die Platformunabhängigkeit zu gewährleisten, erstellt der Javacompiler sogenannten "Java Bytecode". Dies ist eine Zwischenstufe zwischen Quelltext und ausführbarem Binärformat. Dieser Bytecode wird nicht direkt sondern in einer Java Laufzeitumgebung (JRE) ausgeführt.

Um Java Bytecode auszuführen, muss eine Java Laufzeitumgebung (JRE) installiert sein. Sie stellt die nötigen Bibliotheken sowie die platformabhängige Java Virtual Machine (JVM) bereit. Ein Java Development Kit (JDK) enthält zusätzliche Entwicklungswerkzeuge, etwa einen Java Bytecode Compiler und einen Debugger.

JVM languages
The Java virtual machine is not used exclusively by Java programming language. Multiple programming languages use the Java platform and run on the JVM. Examples of such include: Clojure, Apache Groovy, Kotlin or Scala.

Die Auswahl
Gentoo bietet viele verschiedene Laufzeitumgebungen (JREs) und Development Kits (JDKs) an. Unter anderem sind dies:

Eine JRE/JDK installieren
Um das im aktuellen Profil als Standard gesetzte JDK zu installieren, reicht es  auszuführen. Für die JRE entsprechend.

To install the profile's default JRE run:

Einige JDKs und JREs, z.B. die Packete von Sun, besitzen spezielle Lizenzen. Ohne diese, z.B. dlj-1.1, explizit via ACCEPT_LICENSE in zu akzeptieren, können die entsprechenden Packete nicht installiert werden. Informationen wie eine Lizenz in akzeptiert werden kann, befinden sich im Portage Handbuch

Um Schwierigkeiten mit Lizenzen zu vermeiden, kann auf  zurückgegriffen werden. Dies ist eine freie Java Implementierung aus dem OpenJDK Projekt.

Installing IcedTea GCJ Virtual Machine
The IcedTea virtual machine is provided in source code and requires compilation by a Java bytecode compiler. This bootstrapping can be executed by the GNU Compiler for Java (GCJ). This compiler is available when GCC is built with the  USE flag.

When GCC is rebuilt with this USE flag set, the package can be installed. Because of a Portage bug, users need to install and  explicitly first if they are not already present.

Installation von "fetch-restricted" virtuellen Maschinen
Einige JDKs und JREs benötigen einige extra Schritte vor der Installation. weist beim ersten Installationsversuch darauf hin.

In den ebuild-Dateien oder in der Ausgabe von emerge finden sich Informationen wo die benötigten Dateien manuell heruntergeladen werden können. Diese müssen, wie angegeben, in abgelegt werden. Danach kann die Installation wie üblich via emerge durchgeführt werden.

Setting up a headless JRE
Sometimes there is no need for a full JRE with all the capabilities of java. Using java on a server often does not require any GUI, graphical, sound or even printer related features. To install a simplified (sometimes also referred to as headless) JRE, a few USE flags need to be changed for the selected JRE flavor.

Depending on the current Gentoo profile, this might already be the case. As usual, the USE flag settings that are applicable to a particular package can be checked by running in pretend mode:

Übersicht
Gentoo bietet die Möglichkeit mehrere JDKs oder JREs parallel zu benutzen.

Mit, können die systemweiten Einstellungen geändert werden. Dazu sind natürlich Root-Rechte nötig. kann aber auch als einfacher Benutzer verwendet werden um die eigenen Einstellungen anzupassen.

Setzen der Standard virtuellen Maschine
Mit dem Kommando  erhält man eine Liste aller auf dem System installierten JDKs und JREs. Eine Beispielausgabe ist:

Der * markiert die aktuelle VM (Systemweit oder für den Benutzer, falls gesetzt). Der Name in eckigen Klammern ist das Handle der entsprechenden VM. Mit  und dem Handle oder der ID kann die aktuelle VM gesetzt werden. Hier ist ein Beispiel:

Setzen der System-VM via Handle (bevorzugte Methode):

Alternativ kann die VM durch die ID gewählt werden:

Als normaler Benutzer, kann  verwendet werden.

Build-Only-VM
Einige virtuelle Machinen sind als "build-only" markiert. Dies kann an bekannten Sicherheitslücken oder an der fehlenden aktiven Betreuung des Projekts liegen. Diese VMs werden von Gentoo nicht automatisch zum Ausführen von Anwendungen benutzt. Trotzdem sind sie noch verfügbar, da sie von einigen Packete beim komplieren benötigt werden. Vom Setzen solcher VMs als aktive System- oder Nutzer-VM wird dringend abgeraten. Andernfalls werden diese VMs bei der Ausführung von oder von Packeten die nicht die Gentoo Startskripte benutzen verwendet.

Setzen des standard Klassenpfads, CLASSPATH
kann benutzt werden um einen systemweiten oder benutzerspezifischen Klassenpfad zu setzten.

Zu erst ist es zweckmäßig eine Liste mit auf dem System verfügbaren Java-Bibliotheken zu erstellen. Dies sind Kandidaten für die Aufnahme in CLASSPATH.

Hier sind die Namen in eckigen Klammern die IDs oder Handles die an  übergeben werden können. Hier ist ein Beispiel:

Es ist notwendig die Umgebung durch "sourcen" von oder durch Ab- und Anmelden zu aktualisieren.

Für Benutzer erstellt  die Datei. Diese sollte dann vom Shell-Profil gesourced werden.

Sourcen des benutzerspezifischen Klassenpfads

Um einen systemweiten Klassenpfad zu setzen, kann folgendes in Shell-Profil eingetragen werden. Wie bereits erwähnt ist aber dringend davon abzuraten.

Java Browser Plugins
The Java browser plugin used to be managed via. This has now been removed in favor of a simpler out-of-the-box experience. For basic usage, simply emerge the chosen JVM with the  USE flag enabled. Note that Oracle's plugin is only available for and.

For more information, including JVM selection, Web Start, and multilib, see the README installed with icedtea-web.

Setzen der USE-Flags
Für mehr Informationen über USE-Flags sei auf dasUSE-Flag Kapitel im Gentoo-Handbuch verwiesen.

Die USE-Flags

 * java aktiviert die Java Unterstützung in diversen Programmen.
 * nsplugin fügt Unterstüzung für Java-Browser-Plugins hinzu. Die wird zur Benutzung von Java-Applets im Webbrowser benötigt.
 * source installiert ein Archiv mit den Quelltexten des Packets. Die wird typischerweise von IDEs um den Code von verendeten Bibliotheken anzuzeigen.
 * jce aktiviert Unterstützung für die Java Cryptographic Engine.
 * doc, für Java-Packete wird mit Hilfe von javadoc eine API-Dokumentation erstellt.

Following USE flags go in JAVA_PKG_IUSE.
 * The flag installs a zip of the source code of a package. This is traditionally used for IDEs to 'attach' source to the libraries that are being use;
 * For Java packages, the flag will build API documentation using javadoc.

External resources

 * The Java Project Page
 * The gentoo-java, gentoo-user, and gentoo-dev mailing list archives
 * #gentoo and #gentoo-java on IRC
 * Wikipedia's entry for Java
 * Fragen oder Anregungen bezüglich dieser Seite können per an das Gentoo-Java-Team gerichtet werden.


 * java-config man Page



For suggestions or questions regarding this document, please email the Gentoo Java team: