HotSpot est une machine virtuelle Java pour ordinateurs et serveurs, maintenue et distribuée par Oracle. Elle supporte des techniques de développement telles que compilation à la volée et l'optimisation adaptative conçue pour améliorer les performances.

HotSpot

Description de cette image, également commentée ci-après
Logo de Java
Informations
Créateur Sun Microsystems
Développé par Oracle
Fichier exécutable java.exe
Première version le 27 mars 1999, il y a 27 ans[1]
Dernière version 23.25-b01
État du projet  En développement actif
Écrit en C++
Système d'exploitation Multiplateforme (d)Voir et modifier les données sur Wikidata
Environnement Logiciel multiplate-forme
Langues Anglais
Type Machine virtuelle Java
Politique de distribution Gratuit
Licence GNU Licence publique générale (actuellement), Propriétaire (précédemment)
Site web openjdk.java.net/groups/hotspotVoir et modifier les données sur Wikidata

Historique

modifier

Lancé pour la première fois le 27 avril 1999, elle s'appuie sur les technologies issus de l'implémentation de Strongtalk dans le langage de programmation Smalltalk développé à l'origine par Longview Technologies, et qui a été commercialisé sous le nom d'Animorphic. Un projet de recherche de Sun Microsystems, le langage de programmation Self (langage), avait déjà utilisé avec succès la technologie de machine virtuelle d'Animorphic ce qui amena en 1997 Sun Microsystems à acheter Animorphic[2].

Peu de temps après l'acquisition d'Animorphic, Sun a décidé d'écrire un nouveau compilateur de compilation à la volée (just-in-time) pour la machine virtuelle Java[3]. Ce nouveau compilateur donnera le nom de «HotSpot», qui découle du fait que, comme le logiciel exécute du Bytecode Java, il analyse continuellement les performances du programme pour les «points chauds» qui sont fréquemment ou à plusieurs reprises exécutés. Celles-ci sont ensuite ciblées pour l'optimisation du code, conduisant à une exécution à hautes performances avec un minimum de frais généraux pour un code moins performant. Un rapport prouve que la machine virtuelle Java (MVJ) peut dépasser du code C ou C++ pour certains benchmarks [4].

Initialement disponible en tant que module complémentaire pour Java 1.2 [5] , HotSpot est devenu la machine virtuelle Java par défaut à partir de Java 1.3 [6].

Caractéristiques

modifier

Le JRE de Sun comporte deux machines virtuelles, l'une appelée «Client» et l'autre «Server». La version Client est réglée pour un chargement rapide et fait usage de l'interprétation. La version Server charge plus lentement, mettant plus d'efforts dans la production de compilation juste-à-temps hautement optimisée, qui donne des performances plus élevées. Les deux machines virtuelles compilent uniquement des méthodes souvent exécutées, en utilisant un seuil de comptage d'invocation configurable pour décider quelles méthodes compiler.

La compilation partagée, une option introduite dans Java 7, utilise à la fois les compilateurs client et serveur en tandem pour fournir un temps de démarrage plus rapide que le compilateur serveur, mais des performances de pointe similaires ou meilleures[7]. À partir de Java 8, la compilation hiérarchisée est la valeur par défaut pour la VM du serveur[8].

La machine virtuelle Java HotSpot est écrite en C++. Comme indiqué sur la page Web HotSpot, la source contient environ 250 000 lignes de code[9]. Hotspot fournit:

Drapeaux MVJ

modifier

HotSpot prend en charge de nombreux arguments en ligne de commande pour les options de l'exécution de la machine virtuelle. Certains sont standards et doivent être trouvés dans n'importe quelle machine virtuelle Java conforme, d'autres sont spécifiques à HotSpot et ne peuvent pas être trouvées dans d'autres MVJ (les options qui commencent par -X ou -XX ne sont pas standard)[10],[11],[12],[13].

Notes et références

modifier
  1. https://www.thefreelibrary.com/Sun+Announces+Availability+of+the+Java+HotSpot+Performance+Engine%3B...-a054477747
  2. (en) « Sun's Gosling Previews Hotspot Java Virtual Machine », ComputerGram, 13 février 1998 (consulté le 20 avril 2008)
  3. (en-US) « Cliff Click on Azul's Pauseless GC, Zing, JVM Languages », InfoQ, 20 janvier 2011 (consulté le 10 mai 2016) : « [...] Anamorphic was acquired by Sun so the original team was at a company called Anamorphic, they came in with a technology that was targeted at SmallTalk and they re-targeted it for Java and they hired me shortly afterwards to do a new JIT for their virtual machine. »
  4. (en-US) J. P. Lewis, « Performance of Java versus C++ », 2004 (consulté le 3 octobre 2007)
  5. (en-US) Stephen Shankland, « HotSpot finally makes its mark », CNET,‎ 18 février 1999 (lire en ligne)
  6. (en-US) « Sun Microsystems releases fastest client-side Java platform to date », Sun Microsystems, 8 mai 2000 (consulté le 3 octobre 2007)
  7. (en) « Java ™ HotSpot Virtual Machine Performance Enhancements », sur oracle.com (consulté le 18 mai 2023).
  8. (en) « Java ™ HotSpot Virtual Machine Performance Enhancements », sur oracle.com (consulté le 18 mai 2023).
  9. (en) « The HotSpot Group », Sun Microsystems, 2007 (consulté le 3 octobre 2007) : « There are nearly 1500 C/C++ header and source files, comprising almost 250,000 lines of code »
  10. (en) « Java HotSpot VM Options », Sun Microsystems (consulté le 8 février 2009)
  11. (en) Joseph D. Mocker, « A Collection of JVM Options » [archive du 30 avril 2011], 28 août 2007 (consulté le 8 février 2009)
  12. (en) Dmitri Maximovich, « The most complete list of -XX options for Java 6 JVM » [archive du 30 janvier 2010] (consulté le 8 février 2009)
  13. (en) Charles Nutter, « My Favorite Hotspot JVM Flags », 29 janvier 2009 (consulté le 8 février 2009)

📚 Artikel Terkait di Wikipedia

Machine virtuelle Java

Java faisant peu d'optimisations, c'est à la machine virtuelle de les faire, selon les objectifs propres à cette dernière. Article détaillé : HotSpot

Java (langage)

pas en Java. Dans les débuts de Java (c'est-à-dire avant le lancement de la machine virtuelle HotSpot dans Java 1.3 en 2000), la lenteur de Java était

Point chaud (géologie)

déplacements des points chauds proviennent de l'ouvrage Plate velocities in hotspot reference frame de W. J. Morgan et J. P. Morgan. Légende de la colonne

Plateforme Java

proposant notamment ses propres implémentations : HotSpot pour Java SE, serveur Glassfish pour Java EE. À l'instar de la plateforme Microsoft .NET ou

Java (technique)

celui de la machine virtuelle Java HotSpot. En mai 2007, lors de la conférence JavaOne, c’est l’ensemble du code Java qui a été mis en open source (à

Environnement d'exécution Java

être confondu avec Java SE. L'environnement d'exécution Java (abr. JRE pour Java Runtime Environment), parfois nommé simplement « Java », est une famille

Point chaud de biodiversité

voir Point chaud, Hotspot et Zone critique. Un point chaud de biodiversité, appelé aussi zone critique de biodiversité ou hotspot de biodiversité, est

Machine virtuelle

existe plusieurs implémentations de la JVM, dont la plus utilisée est HotSpot de l'entreprise Oracle Corporation. Article détaillé : virtualisation.