Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 100% complete.

Java ist eine ursprünglich von Sun Microsystems entwickelte Programmiersprache, die eine Plattform-unabhängige Virtuelle Maschine verwendet, um Java Bytecode in Echtzeit auszuführen. Es ist eine beliebte Wahl für Entwickler, die plattformübergreifende Geschäftsanwendungen 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 JDK
OpenJDK dev-java/openjdk und dev-java/openjdk-bin
Eclipse Temurin dev-java/openjdk-jre-bin

Ein JRE/JDK installieren

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

root #emerge --ask --oneshot virtual/jdk

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

root #emerge --ask --oneshot 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/openjdk headless-awt -alsa -cups
dev-java/openjdk-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

Der eselect Befehl kann verwendet werden um eine Liste der installierten Java Instanzen (ob JRE oder JDK) anzuzeigen. Hier ist ein Beispiel der Ausgabe:

user $eselect java-vm list
Available Java Virtual Machines:
  [1]   openjdk-8 
  [2]   openjdk-11 
  [3]   openjdk-17
  [4]   openjdk-bin-8  system-vm user-vm

Das user-vm Kennzeichen zeigt die Standard JVM des Benutzers. Das system-vm Kennzeichen zeigt die Standard JVM des Systems und die des Benutzers falls keine gesetzt ist. Die Nummer in den Klammen (z.B. [1]) ist die Referenz für die jeweilige JVM. Um die Standard System JVM zu setzten:

root #eselect java-vm set system 1

Um eine bevorzugte User JVM zu setzen:

user $eselect java-vm set user 1
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
Das Java Plugin wurde zuletzt in JDK 9 unterstützt und ist seitdem veraltet[1].
Hinweis
Note that Chromium-basierte Browser seit Version 42 und Firefox seit Version 52 NPAPI-basierte Plugins nicht mehr Unterstützen[2], was das Java Plugin in modernen Browsern im Grunde deaktiviert.

Für Personen die einen Java-aktivierten Browser für einen spezifischen Anwendungsfall benötigen, haben z.B. palemoon/palemoon-bin im palemoon Overlay zur Verfügung, welches eine langfristige Unterstützung für NPAPI und daher Java Plugins bis zu JDK 8 hat[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

Folgende USE Flags können in JAVA_PKG_IUSE, siehe Gentoo Java USE flags für Details und andere spezifische USE Flags von Java:

  • Die source flag installiert eine ZIP von dem Quellcode eines Pakets. Dies ist traditionell für IDEs zum "anhängen" von Quellen an die Bibliotheken die verwendet werden;
  • Für Java Pakete baut die doc Flag API Dokumentationen mit javadoc.

Troubleshooting

Minecraft Launcher Error

  • Ein spezifischer Error in welcher minecraft-launcher nach ein paar Sekunden mit dem "Alarm" und "SaveToBuffer failed" Error abstürzt wurde gelöst durch das setzen der threads USE Flag für net-misc/curl.
  • Wenn minecraft-launcher ausgeführt wird, wurde folgender Error ausgeworfen:
user $./minecraft-launcher
[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.

Dies wurde gelöst durch das ausführen von minecraft-launcher mit folgenden Optionen:

user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher

Siehe auch

Externe Ressourcen

Weitere Informationen können offline abgerufen werden:

user $man java-config
user $java-config --help

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.