Java/de

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

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.

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.

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.

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.

Ü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.

Bevorzugte Build-VM
Beim Bauen von Java-Packeten, kann die verwendete VM von der als System-VM gesetzten abweichen.

Das kann zum Beispiel erforderlich sein, wenn die System-VM Version 1.6 hat und die benötigte VM-Version jedoch 1.5 ist. Während des Bauens wird eine passende Version-1.5 VM gesetzt, ohne die Einstellung der System-VM zu beeinflussen.

Zur Auswahl einer passenden VM existiert (pro Architektur) eine unter eine Liste mit Standardeinstellungen.

Diese Standards (und auch die System-VM) können in  überschrieben werden. Auf diese Weise lässt sich detailliert steuern welche VM beim Bau von Packeten benutzt wird.

Um beispielsweise stets  zu verwenden:

Oder, um  soweit wie möglich zu verwenden, es sei denn Version 1.4 oder 1.3 wird benötigt:

Oder, um VMs verschiedener Anbieter zu nutzen. Etwa, falls eine 1.3 (sic!) VM benötigt wird, in allen anderen Fällen jedoch   verwenden:

Compiler
Der Standard Java Compiler ist. Er ist in jedem JDK enthalten. Neben der Möglichkeit die VM beim Bau zu wählen, besteht auch die Möglichkeit den Compiler festzulegen. Im Wesentlichen wird schlicht eine Liste der gewünschten Compiler in angegeben.

Einige Compiler unterstützen nicht alle -target und -source Argumente. Daher wird die Liste der bevorzugten Compiler durchgegangen bis ein Passender gefunden wurde. Falls kein passender Compiler in der Liste ist, wird javac verwendet. Dieser funktioniert in jedem Fall.

Die folgende Tabelle enthält eine kurze Beschreibung einiger Compiler:

Setting a default CLASSPATH
can also be used to set a system-wide default CLASSPATH, as well a user-specific default CLASSPATH.

First, you will want to list available Java libraries installed on your system that might want to be put in your CLASSPATH. Here is an example of output:

Again, the names in brackets ([]) are the IDs that you have to pass to. Here is an example:

You will have to update your environment by logging out, then in again or sourcing.

For users,  will create, which you should then source from your shell's profile.

Sourcing user specific classpath

If you really want a system wide or user default classpath you can add something like the following to your shell's profile. But we would advise against it.

Installing a plugin
You can install a Java plugin for your web browser by emerging a Java VM with the  USE flag set.

Portage will allow you to install multiple versions of Java plugins, though only one will be used by your browser. You can check the list of available plugins by running:

In this example,  is selected for the browser plugin.

Verify that the correct plugin was selected:

Java.com also provides a link to verify your installed plugin. Additionally, if you are using a Mozilla-based browser, you can verify your Java plugin by typing  into the address bar.

Plugins on multilib systems
If you are running a mixed 64-bit and 32-bit multilib system (for example, on AMD64), you can use 64-bit and 32-bit Java plugins. Unless you have a pressing need to run 32-bit Java applications, we recommend using native 64-bit plugins on 64-bit web browsers.

There are several native 64-bit browser plugins available. The default JDK/JRE pair,  and , both include browser plugins. Just emerge one of them with the  USE flag enabled.

To use a 32-bit plugin on a 32-bit browser, you will need to emerge  with the   USE flag enabled.

Next, check which plugins are available:

Now select the right plugin for your browsers:

Verify the correct plugin was selected:

Setting USE flags
For more information regarding USE flags, refer to the USE flags chapter from the Gentoo Handbook.

The flags

 * The java flag adds support for Java in a variety of programs
 * The nsplugin flag adds support for Mozilla-like browsers (including Firefox). You will need this for viewing Java applets in your Mozilla-like browser.
 * The source flag installs a zip of the source code of a package. This is traditionally used for IDEs to 'attach' source to the libraries you are using.
 * The jce flag adds support for the Java Cryptography Engine
 * For Java packages, the doc flag will build API documentation using javadoc.

Off-line resources

 * java-config man page

Online 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
 * If you have suggestions or questions regarding this document, please email the Gentoo Java team:

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Joshua Nichols
 * Karl Trygve Kalleberg
 * Joshua Saddler