Java-Versionen und wie man sie nicht verwechselt

704
KansaiRobot

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

Welche Version von JRE und JVM habe ich und welche ist die neueste?

Jetzt, bevor ich mich "google it" sagen wollte, habe ich es bereits gegoogelt. Deshalb meine Verwirrung.

In der Java-Homepage heißt es:

Auf der Registerkarte Allgemein in der Java-Systemsteuerung ist die Version über den Abschnitt Info verfügbar. Nach dem Klicken auf "Info" wird ein Dialogfeld mit der Java-Version angezeigt.

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

In dieser Homepage heißt es auch:

JRE und JDK sind getrennt und können in Ihrem System vorhanden sein. Auf einem Mac kann nur eine JRE installiert werden. Auf einem System können mehrere JDKs installiert sein, beliebig viele.

Okay, das weiß ich schon. Also mache ich was sie sagen, um die Version vom Terminal zu bekommen 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. Nun kommt die Frage:

Welche Version habe ich? Ich meine, die Version 8 ist die JRE-Version? oder ist es die JVM-Version? Obwohl sie sich auf der Homepage unterscheiden (als Zitat), ist die Anweisung, die Version zu erhalten, dieselbe!

Um es noch komplizierter zu machen, gehe ich zu Wikipedia und dort heißt es, dass die aktuell unterstützten Versionen Java 8 und Java 11 sind. Warum zwei? und was ist mit 9 und 10 passiert? Und sind es wieder JRE oder JVM?

Kann mir das jemand erklären?

0

2 Antworten auf die Frage

0
harrymc

Es scheint mir, dass Ihre Fragen in demselben Wikipedia-Artikel beantwortet werden:

Java 8 und Java 11 sind die derzeit unterstützte Version für Langzeitunterstützung (LTS), und Java 10 ist die zuvor unterstützte Version der Schnellfreigabe. Die Unterstützung für Java 10 endete an dem Tag, an dem die Unterstützung für Java 11 im September 2018 begann. Java 7 wird nicht mehr öffentlich unterstützt, Java 9 hat keine Updates mehr erhalten. da Java 9 eine kurzfristige Schnellversion war, die durch Java 10 abgelöst wurde, und "End of Public Updates" für Java 8 für Januar 2019 für den kommerziellen Einsatz vorgesehen ist, nicht früher als für Dezember 2020 für den nicht-kommerziellen Gebrauch. Für Java 11 wird Oracle keine langfristige Unterstützung bieten. Stattdessen wird erwartet, dass die breitere OpenJDK-Community als AdoptOpenJDK die Arbeit ausführt.

Die Versionen 9 und 10 waren also nur von kurzer Dauer. Ich vermute, dass es sich um Maßnahmen zur Überbrückung der Lücke handelte, die aufgrund schwerwiegender Sicherheitslücken aus dem Weg geräumt 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 Abteilung fallen zu lassen und nur über eine einheitliche JDK-Version auf der Basis von OpenJDK zu verfügen, so dass sie möglicherweise nicht die Leistungsverbesserungen aufweist, die in der kostenpflichtigen Version von Oracle Java gefunden wurden.

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

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

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

Sie finden diese Informationen möglicherweise auch in der Systemsteuerung> Java (32-Bit) oder in der Systemsteuerung> Java (64-Bit) :

Vielen Dank. Ich benutze einen Mac. Ich frage mich, wie man JDK und JRE dort findet KansaiRobot vor 5 Jahren 0
Vielen Dank! (übrigens, ich habe nie eine Antwort abgelehnt, sie ist nicht in meinem Charakter :) KansaiRobot vor 5 Jahren 0
Vielen Dank. Der erste Teil meiner Antwort ist immer noch nützlich, und ich werde den zweiten Teil für Windows-Benutzer behalten. harrymc vor 5 Jahren 0
@kansai Ich hoffe, wenn jemand eine falsche Antwort bereitstellt, helfen Sie dem Rest von uns, dies zu wissen, indem Sie ihn abstimmen. Abstimmungen sowohl nach oben als auch nach unten sind ein wichtiger Teil, wie wir uns gegenseitig helfen, nützliche Antworten zu finden. Vielen Dank für Ihren Beitrag. Twisty Impersonator vor 5 Jahren 0
@ TwistyImpersonator: Eine falsche Antwort für ein Poster ist möglicherweise die richtige für ein anderes. Ich halte es nicht ab, Antworten abzustimmen. Wenn sich jemand bemüht hat, an eine Antwort zu denken und sie zu veröffentlichen, sollte er nicht dafür bestraft werden, sondern ermutigt werden, weiterzumachen. harrymc vor 5 Jahren 0
Ich schlage keine Down-Down-Antworten vor, die sie * nicht mögen. * Ich meine, Down-Antwort-Antworten sind falsch **. ** Dieses Feedback schulden wir Nutzern, die weniger in der Lage sind, falsche Antworten selbst zu erkennen. Twisty Impersonator vor 5 Jahren 0
0
Mark

Sie verwirren die Kuppel der Bedingungen und sind auf einem Mac, auf dem Oracle auch einige verwirrt hat.

Da denke ich 4 verschiedene Sachen.

  1. JVM (Java Virtual Machine) Dies ist in allen Java-Versionen enthalten und führt die Java-kompilierten Klassendateien aus. Es kann nicht direkt heruntergeladen werden, ist jedoch Teil der anderen 3 Elemente. Java-Version zeigt die Version, die Sie verwenden.

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

  3. JRE (Java Runtime Environment). In Windows-, Linux- und Apple-Versionen von Java bietet dies die minimale Auswahl an Dateien, die erforderlich sind, um ein Java-Programm von der Befehlszeile aus zu starten. Es scheint nicht als Teil einer Oracle macOs-Version zu existieren. Dies ist jedoch die Java (TM) SE-Laufzeitumgebung, die von der Java-Version gezeigt wird.

  4. JRE (Java Runtime Environment) auf MacOS. Von Oracle aus ist dies die Umgebung, in der Java-Applets in Ihrem Browser ausgeführt werden. Dies ist die JRE, die Sie nur auf Ihrem Mac haben können. Dies ist auch die, die von der Java-Systemsteuerung in den Systemeinstellungen angezeigt und aktualisiert wird.

Auf MacOS von der Befehlszeile aus installieren Sie also das JDK, das eine JRE und eine JVM enthält, und Sie können viele Versionen davon haben. Es gibt auch eine separate JRE (nicht die Befehlszeile), die Applets in Ihrem Browser ausführt und sich in der Java-Systemsteuerung befindet. Sie können nur eines davon haben.

Versionsnummern usw. Soweit ich nach Version 8 verstehe, haben sie die Versionsnummerierung geändert. Wikipedia sagt

Im September 2017 schlug Mark Reinhold, Chefarchitekt der Java-Plattform, vor, den Release-Zug anstelle des aktuellen Zwei-Jahres-Zeitplans auf "alle sechs Monate eine Feature-Release" zu ändern. [1] [2] .

So wurden im März 2019 9,10 durch 11 ersetzt, und 12 ist fällig - siehe https://en.wikipedia.org/wiki/Java_version_history für Timings und Support.

So finden Sie die JVMs, die Sie über den Befehlszeilenlauf verwenden können /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 

Zur Installation und Auswahl des JDK siehe https://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching