Java-Versionen und wie man sie nicht verwechselt

Java-Versionen und wie man sie nicht verwechselt

Mir ist bewusst, dass es die JRE und die JVM gibt. Ich habe auch in Java programmiert, bin also kein völliger Anfänger. In letzter Zeit bin ich jedoch sehr verwirrt und würde mich über eine aktuelle Antwort auf meine Frage freuen.

Welche JRE- und JVM-Version habe ich und welche ist die aktuellste?

Bevor Sie mir jetzt sagen möchten „google es“, habe ich es bereits gegoogelt. Daher meine Verwirrung.

ImJava-Startseitees sagt:

Die Version ist im Abschnitt Info unter der Registerkarte „Allgemein“ im Java Control Panel verfügbar. (Nachdem Sie auf Info geklickt haben, wird ein Dialogfeld mit der Java-Version angezeigt.)

Nun, das habe ich getan und habe Version 8 Update71.

auf dieser Homepage heißt es außerdem:

JRE und JDK sind getrennt und können auf Ihrem System koexistieren. Auf dem Mac kann nur ein JRE installiert werden. Auf einem System können mehrere JDKs installiert werden, so viele Sie möchten.

Okay, das weiß ich schon. Also mache ich, was sie sagen, um die Version vom Terminal abzurufen, und ich bekomme

java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

Okay, es scheint das Gleiche zu sein. Jetzt kommt die Frage:

Welche Version habe ich? Ich meine, die Version 8 ist die JRE-Version? Oder ist es die JVM-Version? Auf der Homepage werden sie zwar unterschieden (wie im Zitat), aber die Anleitung zum Abrufen der Version lautetdas gleiche!

Um die Sache noch komplizierter zu machen, gehe ich zuWikipediaund dort steht, dass die aktuell unterstützten Versionen Java 8 und Java 11 sind. Warum zwei? Und was ist mit 9 und 10 passiert? Und noch einmal: Sind das JRE oder JVM?

Kann mir das jemand erklären?

Antwort1

Mir scheint, dass Ihre Fragen im selben Wikipedia-Artikel beantwortet werden:

Java 8 und Java 11 sind die derzeit unterstütztenLangzeitunterstützung(LTS)-Version und Java 10 ist die vorherige unterstützte Rapid-Release-Version. Der Support für Java 10 endete am selben Tag, an dem der Support für Java 11 begann, im September 2018. Java 7 wird nicht mehr öffentlich unterstützt, Java 9 erhält keine Updates mehr. Da Java 9 eine kurzfristige Rapid-Release-Version war, die durch Java 10 ersetzt wurde, ist das „Ende der öffentlichen Updates“ für Java 8 für Januar 2019 für die kommerzielle Nutzung und nicht früher als Dezember 2020 für die nicht-kommerzielle Nutzung geplant. Für Java 11 wird kein langfristiger Support von Oracle bereitgestellt; stattdessen wird erwartet, dass die breitere OpenJDK-Community, beispielsweise AdoptOpenJDK, die Arbeit übernimmt.

Die Versionen 9 und 10 waren also nur von kurzer Dauer. Ich vermute, dass es sich dabei um Notlösungen handelte, die in Reaktion auf schwerwiegende Sicherheitsmängel in aller Eile herausgebracht wurden.

Version 8 ist die letzte Version, die noch von Oracle unterstützt wird und in JDK und JRE unterteilt ist. Version 11 scheint diese Unterteilung aufgegeben zu haben und nur noch eine vereinheitlichte JDK-Version auf Basis von OpenJDK zu haben. Daher verfügt sie möglicherweise nicht über die Leistungsverbesserungen der kostenpflichtigen Version von Oracle Java.

Um herauszufinden, welche Versionen Sie unter Linux haben, können Sie vermutlich die installierten Pakete abfragen.

Unter Windows finden Sie diese Informationen möglicherweise in der Registrierung für 32-Bit und 64-Bit unter:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

Diese Informationen finden Sie möglicherweise auch inSystemsteuerung > Java (32-Bit)oder Systemsteuerung > Java (64-Bit):

Bildbeschreibung hier eingeben

Antwort2

Sie verwechseln einige der Begriffe und Sie verwenden einen Mac, wo Oracle ebenfalls einige davon verwechselt hat.

Ich glaube, es gibt vier verschiedene Dinge.

  1. JVM (Java Virtual Machine) ist in allen Java-Versionen enthalten und ist die ausführbare Datei, die die kompilierten Java-Klassendateien ausführt. Sie kann nicht direkt heruntergeladen werden, ist aber Teil der anderen 3 Elemente. java -version zeigt die Version an, die Sie verwenden.

  2. JDK (Java Development Kit) Dies ist die Installation, die Sie benötigen, wenn Sie Programme schreiben. Sie enthält den Compiler und andere Tools. Für macOS mit Oracle-Versionen ist dies der einzige Download, der eine Umgebung bereitstellt, die über /usr/bin/java gestartet werden kann.

  3. JRE (Java Runtime Environment). In den Windows-, Linux- und Apple-Versionen von Java stellt dies die Mindestauswahl an Dateien bereit, die zum Ausführen eines Java-Programms über die Befehlszeile erforderlich sind. Es scheint nicht als Teil einer Oracle-MacOS-Version vorhanden zu sein. Dies ist jedoch die Java(TM) SE Runtime Environment, die nach Java-Version angezeigt wird.

  4. JRE (Java Runtime Environment) unter macOS. Von Oracle ist dies die Umgebung, die Java-Applets in Ihrem Browser ausführt. Dies ist die JRE, von der Sie nur eine auf Ihrem Mac haben können. Dies ist auch diejenige, die vom Java-Kontrollfeld in den Systemeinstellungen angezeigt und aktualisiert wird.

Unter macOS installieren Sie also über die Befehlszeile das JDK, das eine JRE und eine JVM enthält, und Sie können mehrere Versionen davon haben. Es gibt auch eine separate JRE (nicht dasselbe wie die Befehlszeile), die Applets in Ihrem Browser ausführt und sich im Java-Kontrollfeld befindet, und Sie können nur eine davon haben.

Was Versionsnummern usw. angeht, so habe ich verstanden, dass nach Version 8 die Versionsnummerierung geändert wurde. Wikipedia sagt

Im September 2017 schlug Mark Reinhold, Chefarchitekt der Java-Plattform, vor, den Release Train vom aktuellen Zweijahresplan auf „ein Feature Release alle sechs Monate“ umzustellen,[1][2] und später wurde dieser Vorschlag umgesetzt.

Somit wurden 9,10 durch 11 ersetzt und 12 ist im März 2019 fällig - siehehttps://en.wikipedia.org/wiki/Java-VersionsgeschichteInformationen zu Zeitpunkt und Art der Unterstützung.

Um die JVMs zu finden, die Sie über die Befehlszeile verwenden können, führen Sie aus/usr/libexec/java_home -V

Ich bekomme

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Matching Java Virtual Machines (6):
11.0.1, x86_64: "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
10.0.1, x86_64: "Java SE 10.0.1"    /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_171, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_92, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

Informationen zum Installieren und Auswählen des JDK finden Sie unterhttps://stackoverflow.com/questions/52524112/wie-installiere-ich-java-11-auf-mac-osx-zulässiges-versionswechseln

verwandte Informationen