HotSpot , lanzado como Java HotSpot Performance Engine , [ 1 ] es una máquina virtual Java para computadoras de escritorio y servidores , desarrollada por Sun Microsystems , que fue adquirida por Oracle Corporation y se convirtió en una división de esta en 2010. Entre sus características se incluye un rendimiento mejorado mediante métodos como la compilación justo a tiempo y la optimización adaptativa . Es la máquina virtual Java de referencia por excelencia.
Historia
El Java HotSpot Performance Engine se lanzó el 27 de abril de 1999, [ 1 ] construido sobre tecnologías de una implementación del lenguaje de programación Smalltalk llamada Strongtalk , desarrollada originalmente por Longview Technologies, que operaba bajo el nombre comercial de Animorphic. La máquina virtual de Longview se basaba en la máquina virtual Self , con un intérprete que reemplazaba al primer compilador, rápido y simple. Cuando Sun canceló el proyecto Self, dos personas clave, Urs Hölzle y Lars Bak, dejaron Sun para fundar Longview. En 1997, Sun Microsystems compró Animorphic. [ 3 ]
Poco después de adquirir Animorphic, Sun decidió escribir un nuevo compilador Just-In-Time (JIT) más potente para la máquina virtual Java, [ 4 ] llamado compilador de servidor HotSpot (nombre interno C2), desarrollado inicialmente por Clifford Click [ 5 ] y que era una extensión de su tesis doctoral sobre compiladores de optimización. [ 6 ] El nombre del compilador, HotSpot, deriva del comportamiento del software: al ejecutar el código de bytes de Java , al igual que la máquina virtual Self, HotSpot analiza continuamente el rendimiento del programa en busca de puntos críticos que se ejecutan con frecuencia o repetidamente. Estos se optimizan , lo que permite una ejecución de alto rendimiento con una sobrecarga mínima para el código menos crítico en términos de rendimiento. En un informe, la JVM superó a algunos códigos C++ o C en algunas pruebas de rendimiento. [ 7 ]
Inicialmente disponible como un complemento para Java 1.2, [ 8 ] HotSpot se convirtió en la JVM Sun predeterminada en Java 1.3. [ 9 ]
Características
JRE (originalmente de Sun, ahora de Oracle) cuenta con dos máquinas virtuales: una llamada Cliente y otra Servidor . La versión Cliente está optimizada para una carga rápida y utiliza interpretación. La versión Servidor carga más lentamente, dedicando mayor esfuerzo a generar compilaciones JIT altamente optimizadas para lograr un mayor rendimiento. Ambas máquinas virtuales compilan únicamente los métodos de uso frecuente, utilizando un umbral de invocación configurable para determinar qué métodos compilar.
La compilación por niveles, una opción introducida en Java 7, utiliza los compiladores del cliente y del servidor en conjunto para proporcionar un tiempo de inicio más rápido que el compilador del servidor, pero un rendimiento máximo similar o superior. [ 10 ] A partir de Java 8, la compilación por niveles es la opción predeterminada para la máquina virtual del servidor. [ 11 ]
HotSpot está escrito en C++ y lenguaje ensamblador. En 2007, Sun estimó que comprendía aproximadamente 250.000 líneas de código fuente. [ 12 ] Hotspot proporciona:
- Un cargador de clases Java
- Un intérprete de código de bytes Java con plantillas
- Compiladores Just-in-Time para cliente (C1) y servidor (C2), optimizados para sus respectivos usos.
- Varios recolectores de basura (incluidos ZGC de baja latencia y Shenandoah de bajo tiempo de pausa) [ 13 ] [ 14 ] [ 15 ]
- Un conjunto de bibliotecas de tiempo de ejecución de soporte
- Características de facilidad de mantenimiento
Indicadores de la JVM
HotSpot admite muchos argumentos de línea de comandos para las opciones de ejecución de la máquina virtual. Algunos son estándar y deben encontrarse en cualquier máquina virtual Java compatible ; otros son específicos de HotSpot y pueden no encontrarse en otras JVM (las opciones que comienzan con -X o -XX no son estándar). [ 16 ] [ 17 ] [ 18 ] [ 19 ]
Licencia
El 13 de noviembre de 2006, la JVM HotSpot y el Kit de Desarrollo de Java (JDK) fueron licenciados bajo la Licencia Pública General GNU (GPL) versión 2. [ 20 ] Este es el código que pasó a formar parte de Java 7. [ 21 ]
Plataformas compatibles
Mantenido por Oracle
Al igual que todo el Java Development Kit (JDK), HotSpot cuenta con el soporte de Oracle Corporation para Windows , Linux y macOS . Las arquitecturas de conjunto de instrucciones (ISA) compatibles son x86-64 y AArch64 . [ 22 ] Desde JDK 15, Solaris y SPARC ya no son compatibles. [ 23 ]
Puertos gestionados por terceros
También existen versiones disponibles de terceros para otros sistemas operativos Unix . Se admiten diversas arquitecturas de hardware, incluidas x86, PowerPC y SPARC (solo para Solaris).
La portabilidad de HotSpot es difícil, ya que gran parte de su código está escrito casi en su totalidad en lenguaje ensamblador , [ 24 ] aunque varias secciones también están escritas en C++ ISO que cumple con los estándares . Para solucionar esto, el proyecto IcedTea ha desarrollado una versión genérica del intérprete de HotSpot llamada Zero-Assembler Hotspot (o Zero ), con casi ningún código ensamblador. Esta versión está diseñada para facilitar la adaptación del intérprete de HotSpot a cualquier arquitectura de procesador Linux . El código de Zero-Assembler Hotspot se utiliza para todas las versiones de HotSpot para arquitecturas distintas de x86 ( PowerPC , Itanium ( IA-64 ), S390 y ARM ) desde la versión 1.6. [ 25 ] [ 26 ] [ 27 ]
Véase también
- Lista de máquinas virtuales Java
- Comparación de máquinas virtuales Java
- Rendimiento de Java
- OpenJDK
- Da Vinci Machine , un proyecto para prototipar la extensión de la JVM para agregar soporte para lenguajes de programación dinámicos.
Referencias
- 1 2 3 "Sun anuncia la disponibilidad del motor de rendimiento Java HotSpot" . Comunicado de prensa . Sun Microsystems. Archivado del original el 1 de noviembre de 2013. Consultado el 26 de marzo de 2013 .
- ↑ "JDK 26" .
- ↑ Servicios, personal y noticias de Chronicle (1997-02-19). "SUN MICRO COMPRA LONGVIEW" . SFGATE . Consultado el 5 de noviembre de 2020 .
- ↑ "Cliff Click sobre Azul's Pauseless GC, Zing, JVM Languages" . InfoQ. 2011-01-20 . Recuperado el 2016-05-10 .
[...] Anamorphic fue adquirida por Sun, por lo que el equipo original estaba en una empresa llamada Anamorphic, llegaron con una tecnología que estaba dirigida a Smalltalk y la redirigieron para Java y me contrataron poco después para hacer un nuevo JIT para su máquina virtual.
- ↑ Click, Clifford (abril de 2001). "El compilador del servidor java hotspotTM" . JVM'01: Actas del Simposio de 2001 sobre Investigación y Tecnología de Máquinas Virtuales JavaTM . 1 :1.
- ↑ "Cliff Click: El mar de nodos y el JIT de HotSpot" . 14 de febrero de 2020 – vía YouTube.
- ↑ Lewis, JP (2004). "Rendimiento de Java frente a C++" . Archivado del original el 24 de abril de 2020. Recuperado el 3 de octubre de 2007 .
- ↑ Shankland, Stephen (18 de febrero de 1999). "HotSpot finalmente deja su huella" . Cnet .
- ↑ "Sun Microsystems lanza la plataforma Java del lado del cliente más rápida hasta la fecha" . Sun Microsystems. 8 de mayo de 2000. Consultado el 3 de octubre de 2007 .
- ↑ "Mejoras de rendimiento de la máquina virtual Java™ HotSpot" . docs.oracle.com .
- ↑ "Mejoras de rendimiento de la máquina virtual Java™ HotSpot" . docs.oracle.com .
- ↑ "The HotSpot Group" . Sun Microsystems. 2007. Consultado el 3 de octubre de 2007. Hay
casi 1500 archivos de cabecera y de código fuente de C/C++, que comprenden casi 250 000 líneas de código.
- ↑ «Principal - ZGC» . Wiki OpenJDK .
- ↑ "Guía de ajuste de la recolección de basura de la máquina virtual HotSpot" . Centro de ayuda de Oracle .
- ^ "Principal - Shenandoah" . Wiki OpenJDK .
- ↑ "El comando java" . Oracle Corporation . Consultado el 21 de marzo de 2025 .
- ↑ Mocker, Joseph D. (2007-08-28). "Una colección de opciones de JVM" . Archivado del original el 30-04-2011 . Recuperado el 08-02-2009 .
- ↑ Maximovich, Dmitri. "La lista más completa de opciones -XX para Java 6 JVM" . Archivado del original el 30 de enero de 2010. Consultado el 8 de febrero de 2009 .
- ↑ Nutter, Charles (29-01-2009). "Mis indicadores favoritos de JVM Hotspot" . Recuperado el 08-02-2009 .
- ↑ "Sun libera el código fuente de su tecnología Java y lo publica bajo la licencia GPL versión dos a través de las comunidades NetBeans y Java.net" . Sun Microsystems. 13 de noviembre de 2006. Archivado del original el 9 de febrero de 2009. Consultado el 6 de mayo de 2017 .
- ↑ JDK7 Archivado el 15/12/2016 en Wayback Machine , dom.
- ↑ "Configuraciones de sistema certificadas de Oracle JDK 17" . Oracle Corporation . Consultado el 1 de febrero de 2021 .
- ↑ "JEP 381: Eliminar los puertos Solaris y SPARC" . openjdk.java.net .
- ↑ Benson, Gary (2007-11-06). "Guía de Gary para portar IcedTea" . Recuperado el 26 de enero de 2008 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Benson, Gary (1 de febrero de 2008). "1 de febrero de 2008" . Consultado el 3 de febrero de 2008 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Haley, Andrew (31 de enero de 2008). "Hacer del ensamblador cero el predeterminado en ppc" . Recuperado el 1 de febrero de 2022 .
- ↑ Angel, Lilian (13 de febrero de 2008). "¡IcedTea 1.6 lanzado con soporte para ensamblador cero y JNLP!" . Red Hat . Consultado el 13 de febrero de 2008 .
Enlaces externos
- Sitio web oficial
- Lista de opciones de HotSpot VM
- Especificación de la máquina virtual Java
- Historia del equipo original de Strongtalk-HotSpot
- Sun anuncia la disponibilidad del motor de rendimiento Java Hotspot . Archivado del original el 18 de diciembre de 2006. Consultado el 27 de marzo de 2014 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - Repositorio de desarrollo de código fuente HotSpot Mercurial (sistema de control de versiones) para JDK8
- Software programado en lenguaje ensamblador
- Software libre programado en C++
- máquina virtual Java
- Software Oracle
- Software de Sun Microsystems
- Software que utiliza la Licencia Pública General de GNU.