5 votes

les versions de java et comment ne pas les confondre

Je sais qu'il y a le JRE et la JVM. J'ai également programmé en Java, je ne suis donc pas totalement débutant. Cependant, ces derniers temps, je suis très confus et j'apprécierais une réponse actuelle à ma question.

Quelle version de JRE et de JVM ai-je et quelle est la plus récente ?

Avant de me dire "googlez-le", je l'ai déjà fait. D'où ma confusion.

Dans le cadre de la page d'accueil java il est dit :

Dans l'onglet Général du panneau de configuration de Java, la version est la suivante disponible dans la section À propos. Une boîte de dialogue apparaît (après avoir cliqué sur A propos de) qui indique la version de Java.

C'est ce que j'ai fait et j'ai la version 8 Update71.

dans cette page d'accueil, il est également indiqué :

Le JRE et le JDK sont distincts et peuvent coexister sur votre système. Un seul JRE peut être installé sur Mac. Il peut y avoir plusieurs JDK installés sur un système, autant que vous le souhaitez.

D'accord, je le sais déjà. Je fais donc ce qu'ils disent pour obtenir la version du terminal et j'obtiens

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)

D'accord, il semble que ce soit la même chose. La question se pose donc maintenant :

Quelle version ai-je ? Je veux dire que la version 8 est la version JRE ? ou est-ce la version JVM ? Dans la page d'accueil, bien qu'ils les distinguent (comme la citation), l'instruction pour obtenir la version est la suivante la même chose !

Pour compliquer encore les choses, je me rends à wikipedia et il y est indiqué que les versions actuellement prises en charge sont Java 8 et Java 11. Pourquoi deux ? et qu'est-il advenu des versions 9 et 10 ? Et encore une fois, s'agit-il de JRE ou de JVM ?

Quelqu'un peut-il m'expliquer cela ?

2voto

harrymc Points 394411

Il me semble que la réponse à vos questions se trouve dans le même article de Wikipedia :

Java 8 et Java 11 sont les versions actuellement prises en charge. soutien à long terme (LTS) et Java 10 est la précédente version rapide prise en charge. Le support de Java 10 a pris fin à la même date que le support de Java 11, en septembre 2018. Java 7 n'est plus pris en charge publiquement, Java 9 a cessé de recevoir des mises à jour. Étant donné que Java 9 était une version rapide à court terme qui a été remplacée par Java 10, et que la "fin des mises à jour publiques" pour Java 8 est prévue pour janvier 2019 pour un usage commercial, et au plus tôt en décembre 2020 pour un usage non commercial. Pour Java 11, le support à long terme ne sera pas assuré par Oracle ; c'est la communauté OpenJDK élargie, sous le nom d'AdoptOpenJDK, qui devrait s'en charger.

Les versions 9 et 10 ont donc été éphémères. Je suppose qu'il s'agissait de mesures palliatives qui ont été mises en place à la hâte en réponse à de graves bogues de sécurité.

La version 8 est la dernière version encore prise en charge par Oracle et divisée en JDK et JRE. La version 11 semble avoir abandonné cette division et n'avoir qu'une version unifiée du JDK basée sur OpenJDK. une version unifiée du JDK basée sur OpenJDK, de sorte qu'elle pourrait ne pas avoir les performances que l'on trouve dans la version payante de Java d'Oracle.

Pour savoir quelles versions vous avez sous Linux, je suppose que vous pouvez interroger la base de données paquets installés.

Sous Windows, vous pouvez trouver ces informations dans le registre pour les versions 32 bits et 64 bits :

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

Vous pouvez également trouver ces informations dans Panneau de configuration > Java (32 bits) ou Panneau de configuration > Java (64 bits) :

enter image description here

1voto

mmmmmm Points 5716

Vous confondez certains termes et vous êtes sur un Mac où Oracle a également confondu certains termes.

Il y a, je crois, 4 choses différentes.

  1. JVM (Java Virtual Machine) : présente dans toutes les versions de Java, c'est l'exécutable qui exécute les fichiers de classe compilés de Java. Elle n'est pas directement téléchargeable mais fait partie des trois autres éléments. java -version indique la version de cette machine que vous utilisez.

  2. JDK(Java development kit) C'est l'installation dont vous avez besoin si vous écrivez des programmes. Elle comprend le compilateur et d'autres outils. Pour macOS avec les versions d'Oracle, c'est le seul téléchargement qui fournit un environnement démarrable par /usr/bin/java.

  3. JRE (Java Runtime Environment). Dans les versions Windows, Linux et Apple de Java, il fournit la sélection minimale de fichiers nécessaires pour lancer un programme Java à partir de la ligne de commande. Il ne semble pas faire partie d'une version Oracle macOs, mais il s'agit de l'environnement d'exécution Java(TM) SE indiqué par la version de Java.

  4. JRE (Java Runtime Environment) sur macOS. Il s'agit de l'environnement d'Oracle qui permet d'exécuter les applets Java dans votre navigateur. C'est le JRE que vous ne pouvez avoir qu'une seule fois sur votre macOS. C'est aussi celui qui est vu et mis à jour par le panneau de contrôle Java dans les Préférences Système.

Ainsi, sur macOS, la ligne de commande permet d'installer le JDK, qui comprend un JRE et une JVM, et qui peut être décliné en plusieurs versions. Il existe également un JRE séparé (différent de celui de la ligne de commande) qui exécute les applets dans votre navigateur et qui se trouve dans le panneau de configuration Java, et vous ne pouvez avoir qu'une seule de ces versions.

En ce qui concerne les numéros de version, etc., je crois savoir qu'après la version 8, la numérotation des versions a été modifiée. Wikipedia dit

En septembre 2017, Mark Reinhold, architecte en chef de la plateforme Java, a proposé de modifier le train de publication pour passer à "une version de fonctionnalité tous les six mois" au lieu du calendrier actuel de deux ans[1][2], et plus tard, la proposition est entrée en vigueur.

Ainsi, les numéros 9 et 10 ont été remplacés par le numéro 11 et le numéro 12 est prévu pour mars 2019. https://en.wikipedia.org/wiki/Java_version_history pour ce qui est des délais et de la durée de l'aide.

Pour trouver les JVM que vous pouvez utiliser à partir de la ligne de commande, exécutez /usr/libexec/java_home -V

J'obtiens

/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

Pour installer et choisir le JDK, voir https://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X