Différence entre JVM et HotSpot?


147

Qu'est-ce que HotSpot et quel est son rapport avec JVM et OpenJDK? Est-ce une bibliothèque? Qu'est-ce que cela fait exactement?

Aussi, quelle est la différence entre OpenJDK et HotSpot?

Réponses:


148

La définition de ce qu'est exactement une machine virtuelle Java est indiquée dans la spécification de la machine virtuelle Java

La JVM est par définition une machine virtuelle , c'est-à-dire une machine logicielle qui simule ce que fait une vraie machine. Comme une vraie machine, elle possède un jeu d'instructions , une architecture d'ordinateur virtuel et un modèle d'exécution. Il est capable d'exécuter du code écrit avec ce jeu d'instructions virtuelles, un peu comme une vraie machine peut exécuter du code machine.

HotSpot est une implémentation du concept JVM. Il a été développé à l'origine par Sun et appartient maintenant à Oracle. Il existe d'autres implémentations de la spécification JVM, comme JRockit , IBM J9 , entre autres.

Voir la liste des implémentations de machine virtuelle Java

L' OpenJDK est un projet dans le cadre duquel une implémentation open source de HotSpot (et de nombreux autres éléments du JDK, par exemple le compilateur, les API, les outils, etc.) est développée.


25

OpenJDK (Open Java Development Kit) est une implémentation gratuite et open source de Java Platform, Standard Edition (Java SE) .OpenJDK est un projet lancé par Sun Microsystems, actuellement pris en charge par de nombreuses entreprises et la communauté pour créer un kit de développement Java absolument en open source. Selon la documentation officielle .

OpenJDK est une implémentation open source des spécifications Java Platform, Standard Edition (Java SE). En mai 2007, Sun a publié une version entièrement modifiable du kit de développement Java (JDK) pour Java SE à la communauté OpenJDK en tant que logiciel libre sous la licence publique générale GNU version deux (GPLv2). Sun a annoncé le conseil d'administration provisoire de la communauté OpenJDK. Sun a également annoncé que les implémentations basées sur OpenJDK peuvent utiliser le kit de compatibilité technique Java SE 6 (JCK) pour établir la compatibilité avec la spécification Java SE 6.

Le projet OpenJDK se compose d'un certain nombre de composants - HotSpot (la machine virtuelle) , la bibliothèque de classes Java et le compilateur Java javac. Pour en savoir plus, visitez son site .

La JVM actuelle fournie par Sun / Oracle est appelée HotSpot car elle recherche des points chauds d'utilisation dans le code (endroits où le code est utilisé de manière plus intensive) pour une optimisation «juste à temps». D'après le wikipedia , HotSpot, publié sous le nom de «Java HotSpot Performance Engine», est une machine virtuelle Java pour les postes de travail et les serveurs, maintenue et distribuée par Oracle Corporation.


J'ai entendu dire qu'OpenJDK utilise également HotSpot pour exécuter du code? Est-ce vrai?
Justin

@TheNewIdiot, alors vous dites que HotSpot fait partie d'OpenJDK? Ou existe-t-il également un HotSpot propriétaire comme le suggère la réponse ci-dessus?
Pacerier

@NINC, donc Hotspot fait à la fois partie d'OracleJDK et d'OpenJDK? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier

12

Remarque: AdoptOpenJDK a changé son nom en Adoptium après avoir rejoint la Fondation Eclipse fin 2020-06.


Différence entre JVM et HotSpot?

Une machine virtuelle Java (JVM) est un ordinateur imaginaire qui n'a jamais été physiquement construit en tant que matériel. Une machine virtuelle Java exécute des programmes compilés dans son jeu d'instructions imaginaire écrit dans le stockage sous la forme d'une représentation intermédiaire appelée bytecode .

Au moment de l'exécution, le bytecode doit être traduit du jeu d'instructions imaginaire au jeu d'instructions réel du CPU de la machine hôte. Cela peut être fait à la volée par un interprète. Ou le bytecode peut être entièrement compilé et mis en cache, pour s'exécuter plus rapidement que via l'interpréteur, dans un processus connu sous le nom de compilation Just-In-Time (JIT) .

Au fil des décennies, il y a eu de nombreuses implémentations de la JVM . La plupart sont tombés.

HotSpot est une implémentation de la technologie JIT qui commence par exécuter interprété et surveille les performances réelles de l'application. Certaines parties de l'application sont ensuite sélectionnées pour être entièrement compilées en tant que code natif et mises en cache, pour une exécution beaucoup plus rapide. HotSpot a été développé chez Sun en tant que produit commercial. Après l'acquisition de Sun, Oracle a fait évoluer HotSpot en combinant des parties importantes de son produit concurrent, JRockit . HotSpot est désormais open-source via leprojet OpenJDK , disponible gratuitement.

Une autre implémentation de ce type dans OpenJ9 , développée par IBM, et désormais open-source via la Fondation Eclipse et disponible gratuitement. Certaines distributions JVM basées sur OpenJDK remplacent HotSpot par OpenJ9 tout en utilisant le reste d'OpenJDK, comme les bibliothèques de classes Java SE . Par exemple, les distributions prédéfinies disponibles sur AdoptOpenJDK vous permettent de choisir HotSpot ou OpenJ9 sur certains matériels.

Diagramme montrant l'historique de la fusion HotSpot et JRockit, et OpenJ9 tous deux disponibles dans AdoptOpenJDK.

Diagramme montrant l'historique de la fusion HotSpot et JRockit, et OpenJ9 tous deux disponibles dans AdoptOpenJDK

Qu'est-ce que HotSpot et quel est son rapport avec JVM et OpenJDK? Est-ce une bibliothèque? Qu'est-ce que cela fait exactement?

  • HotSpot est une implémentation de la partie d'une JVM qui interprète et / ou compile le bytecode Java à exécuter sur le CPU hôte.
  • OpenJ9 est une alternative.

OpenJ9 est généralement connu pour un démarrage beaucoup plus rapide et une utilisation de la mémoire beaucoup plus faible au départ, tandis que HotSpot peut fonctionner plus efficacement dans l'ensemble pour les applications de longue durée. Les deux sont bien considérés, bien usés et disponibles avec les distributions d'OpenJDK.

OpenJDK est un projet open source qui implémente entièrement les spécifications Java , les JSR et les JEP qui définissent la plate-forme Java . Chaque implémentation JVM que je connais aujourd'hui est entièrement ou principalement basée sur la base de code OpenJDKet utilise la technologie HotSpot ou OpenJ9.

Outre la JVM, OpenJDK fournit également une implémentation en code source pour toutes les classes requises par les spécifications Java SE, telles que java.lang , java.util , java.time et d'autres packages.

Aussi, quelle est la différence entre OpenJDK et HotSpot?

Le code source de HotSpot est hébergé, maintenu et développé dans le cadre du projet OpenJDK . L'alternative, OpenJ9 , est hébergée, maintenue et développée par la Fondation Eclipse , tout en remplaçant HotSpot dans certaines distributions d'OpenJDK.

Certaines distributions de la technologie Java choisissent d'être livrées avec HotSpot. Certaines distributions choisissent de remplacer la partie de la base de code OpenJDK qui est HotSpot par l'alternative, OpenJ9 .

Voici un graphique d'organigramme pour vous aider à choisir un fournisseur pour une distribution de la plate-forme Java.

Organigramme vous guidant dans le choix d'un fournisseur pour une implémentation Java 11

Motivations dans le choix d'un fournisseur pour Java


8

HotSpot est, comme mentionné ci-dessus, une implémentation multiplateforme du concept de machine virtuelle Java (JVM) et est distribué avec OpenJDK (Java Developer Kit), sous la licence publique générale GNU. HotSpot est écrit principalement en C ++ et a été initialement développé sous Sun Microsystems. Il est actuellement développé dans le cadre du projet OpenJDK, sur www.java.net. HotSpot JVM était disponible en tant que module complémentaire pour Java 1.2, et plus tard a été utilisé comme JVM Sun par défaut dans Java 1.3. La JVM est actuellement en version 7, Build b147, et a une communauté de développement active derrière elle.

Pour plus d'informations, rendez-vous sur: https://www.java.net/

Bon codage!


7

JVM est une machine abstraite (spécifications). HotSpot, OpenJDK et JRockit, ainsi que les implémentations de JVM.

Implémentations gratuites et open source

  • HotSpot , la principale implémentation de machine virtuelle Java de référence

  • OpenJDK - Open Java Development Kit est une implémentation libre et open source sous licence GNU General Public License (GNU GPL) avec une exception de lien.

Implémentations propriétaires

  • JRockit (originaire d'Appel Virtual Machines) acquis par Oracle pour Linux, Windows et Solaris

pour plus d' implémentations, le
lien explique les différences entre HotSpot et JRocket


-25

HotSpot est une forme avancée de piratage C ++, afin de l'utiliser, vous devez construire contre lui afin de compiler même les choses les plus simples. Sauf si vous réglez les compilateurs et / ou les écrivez à partir de zéro. HotSpot est essentiellement un moyen de convertir le code source en code C ++, puis de le compiler en code natif, d'où le terme jit compilé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.