Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 49% complete.
Outdated translations are marked like this.

Java ist eine ursprünglich von Sun Microsystems entwickelte Programmiersprache, die eine Laufzeitumgebung verwendet, um die Ausführung von in Java entwickelten Anwendungen auf verschiedenen Plattformen zu ermöglichen. Es ist eine beliebte Wahl für Entwickler, die plattformübergreifende Anwendungen erstellen wollen.

Was ist Java?

Ü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 der automatischen Speicherverwaltung, 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 vom Betriebssystem sondern in einer JVM (Java Virtual Machine) ausgeführt.

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

JVM-Sprachen

Die Java Virtual Machine wird nicht ausschließlich von der Java Programmiersprache verwendet. Mehrere Programmiersprachen verwenden die Java-Plattform und laufen auf der JVM. Beispiele für solche Sprachen sind: Clojure, Apache Groovy, Kotlin oder Scala.

Eine virtuelle Maschine installieren

Die Auswahl

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

Anbieter JRE
IcedTea Offenes Java SE (ehemals icedtea6-bin) dev-java/icedtea und dev-java/icedtea-bin
OpenJDK dev-java/openjdk und dev-java/openjdk-bin
Oracles Java dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
Der GCJ IcedTea GNU GCC Java (derzeit IcedTea-7) dev-java/icedtea sys-devel/gcc USE="gcj"

| The IcedTea Open Java SE (formerly icedtea6-bin) | dev-java/icedtea and dev-java/icedtea-bin |-

|}

Ein JRE/JDK installieren

Um das Standard JDK des Profils zu installieren, führen Sie dies aus:

root #emerge --ask virtual/jdk

Um die Standard JRE des Profils zu installieren, führen Sie dies aus:

root #emerge --ask virtual/jre
Hinweis
Beachten Sie, dass jedes JDK ein JRE enthält; die Installation eines JRE ist nicht notwendig, wenn ein JDK emerged wurde.

Einrichten eines Headless JRE

Manchmal besteht kein Bedarf an einem vollständigen JRE mit allen Funktionen von Java. Die Verwendung von Java auf einem Server erfordert oft keine GUI-, Grafik-, Sound- oder sogar Drucker bezogenen Funktionen. Um eine vereinfachte (manchmal auch als headless bezeichnete) JRE zu installieren, müssen einige USE-Flags für die ausgewählte JRE-Variante geändert werden.

DATEI /etc/portage/package.useErforderliche USE-Flag-Änderungen
dev-java/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
dev-java/oracle-jre-bin headless-awt -alsa -cups

Abhängig vom aktuellen Gentoo-Profil könnte dies bereits der Fall sein. Wie üblich können die USE-Flag-Einstellungen, die für ein bestimmtes Paket gelten, überprüft werden, indem man emerge im Pretend-Modus ausführt:

user $emerge --pretend --verbose virtual/jre

Die Java Virtual Machine konfigurieren

Übersicht

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

Setzen der Standard virtuellen Maschine

Wenn Sie den Befehl java-config mit der Option --list-available-vms ausführen, erhalten Sie eine Liste aller auf dem System installierten JREs und JDKs. Hier ist ein Beispiel für die Ausgabe:

root #java-config --list-available-vms
The following VMs are available for generation-2:
1)      IcedTea JDK 7.2.6.3 [icedtea-7]
2)      IcedTea JDK 3.0.1 [icedtea-8]

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

root #java-config --set-system-vm icedtea-7
Now using icedtea-7 as your generation-2 system JVM

Alternative Methode: Auswahl der VM nach der Nummer des Handles:

root #java-config --set-system-vm 3
Now using icedtea-7 as your generation-2 system JVM
Hinweis
source-ing des Profils für bestehende Shell-Sitzungen ist normalerweise nicht erforderlich, wenn Sie die Benutzer- oder System-VM ändern. Die einzige Ausnahme ist, dass Variablen wie JAVA_HOME immer noch auf den alten Ort verweisen oder zur System-VM zurückkehren, nachdem eine Benutzer-VM zum ersten Mal gesetzt wurde

.

Java Browser Plugins

Wichtig
The Java plugin support had been deprecated in JDK 9[1].
Hinweis
Note that Chromium-based browsers since version 42 and Firefox since version 52 no longer support NPAPI-based plugins[2]. This effectively disables the Java plugin on modern browsers.

For those who need a Java-enabled browser for a specific use case, there is e.g. palemoon/palemoon-bin available in the palemoon overlay, which has long-term support for NPAPI and thus Java plugins up to JDK 8[3].

USE-Flags für Java

Setzen der USE-Flags

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

USE-Flags

  • Der java Flag fügt Unterstützung für Java in einer Vielzahl von Programmen hinzu;
  • Der nsplugin Flaf fügt Unterstützung für Mozilla-ähnliche Browser (einschließlich Firefox) hinzu. Dies ist für die Anzeige von Java-Applets in einem Mozilla-ähnlichen Browser erforderlich;
  • Der jce Flag fügt Unterstützung für die Java Cryptography Engine hinzu;

Following USE flags go in JAVA_PKG_IUSE, see Gentoo Java USE flags for details and other specific USE flags of Java:

  • 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 that are being use;
  • For Java packages, the doc flag will build API documentation using javadoc.

Troubleshooting

Minecraft launcher errors

  • A specific error in which minecraft-launcher crashed after a few seconds, throwing "Alarm" and "SaveToBuffer failed" error was solved by setting the USE flag threads for net-misc/curl.
  • When executing minecraft-launcher the following error was produced:
user $./minecraft-launcher
[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.

This was solved by executing minecraft-launcher with the following option:

user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher

Siehe auch

Externe Ressourcen

Weitere Informationen können offline abgerufen werden:

  • man java-config
  • java-config --help

Wenn Sie Vorschläge oder Fragen zu diesem Dokument haben, senden Sie bitte eine E-Mail an das Gentoo Java Team: java@gentoo.org

Referenzen

  1. JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
  2. How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018
  3. Pale Moon future roadmap, palemoon.org. Retrieved on June 28, 2019

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.