Java
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
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.
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
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
Das Java Plugin wurde zuletzt in JDK 9 unterstützt und ist seitdem veraltet[1].
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
- Die
java
Flag fügt Unterstützung für Java in einer Vielzahl von Programmen hinzu; - Die
nsplugin
Flag wird noch von www-plugins/lightspark verwendet;
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 derthreads
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
- Java Developer Guide — covers specific details on Gentoo Java ebuilds.
- Project:Java/Why build from source
- Project:Java/Getting Involved
Externe Ressourcen
- Java mit jEnv pro Verzeichnis Konfigurieren
- #gentoo (webchat) und #gentoo-java (webchat) über IRC
- Java 7 and bootstrapping icedtea im Gentoo Forum
Weitere Informationen können offline abgerufen werden:
user $
man java-config
user $
java-config --help
Referenzen
- ↑ JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
- ↑ How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018
- ↑ 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.