De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

HotSpot , lanzado como Java HotSpot Performance Engine , [1] es una máquina virtual Java para computadoras de escritorio y servidores , mantenida y distribuida por Oracle Corporation . Presenta un rendimiento mejorado a través de métodos como la compilación justo a tiempo y la optimización adaptativa .

Historia [ editar ]

El motor de rendimiento Java HotSpot se lanzó el 27 de abril de 1999, [1] construido sobre tecnologías de una implementación del lenguaje de programación Smalltalk llamado Strongtalk , desarrollado originalmente por Longview Technologies, que cotizaba como Animorphic. La máquina virtual Longview se basó en la máquina virtual Self , con un intérprete que reemplazó al primer compilador rápido y tonto. Cuando Sun canceló el proyecto Self, dos personas clave, Urs Hölzle y Lars Bak dejaron Sun para comenzar Longview. En 1997, Sun Microsystems compró Animorphic. [2]

Poco después de adquirir Animorphic, Sun decidió escribir un nuevo compilador Just-In-Time (JIT) para la máquina virtual Java. [3] Este nuevo compilador daría lugar al nombre HotSpot , derivado del comportamiento del software: al ejecutar código de bytes Java , como con Self VM, HotSpot analiza continuamente el rendimiento del programa en busca de puntos calientes que se ejecutan a menudo o repetidamente. Luego, estos están destinados a la optimización , lo que lleva a una ejecución de alto rendimiento con un mínimo de sobrecarga para un código menos crítico para el rendimiento. En un informe, la JVM superó algunos códigos C ++ o C en algunos puntos de referencia. [4]

Inicialmente disponible como complemento para Java 1.2, [5] HotSpot se convirtió en la JVM de Sun predeterminada en Java 1.3. [6]

Funciones [ editar ]

JRE (originalmente de Sun, ahora de Oracle) incluye dos máquinas virtuales, una llamada Cliente y la otra Servidor . La versión del cliente está ajustada para una carga rápida. Hace uso de la interpretación. La versión del servidor se carga más lentamente, poniendo más esfuerzo en producir compilaciones JIT altamente optimizadas para producir un mayor rendimiento. Ambas máquinas virtuales compilan solo métodos que se ejecutan con frecuencia, utilizando un umbral de recuento de invocaciones configurable para decidir 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 mejor. [7] A partir de Java 8, la compilación por niveles es la predeterminada para la máquina virtual del servidor. [8]

HotSpot está escrito en C ++ . En 2007, Sun estimó que comprendía aproximadamente 250.000 líneas de código fuente. [9] Hotspot proporciona:

  • Un cargador de clases de Java
  • Un intérprete de código de bytes de Java
  • Máquinas virtuales cliente y servidor , optimizadas para sus respectivos usos
  • Varios recolectores de basura (incluido un ZGC de tiempo de pausa muy bajo) [10] [11]
  • Un conjunto de bibliotecas en tiempo de ejecución compatibles

Indicadores de JVM [ editar ]

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 ; otras son específicas de HotSpot y es posible que no se encuentren en otras JVM (las opciones que comienzan con -X o -XX no son estándar). [12] [13] [14] [15]

Licencia [ editar ]

El 13 de noviembre de 2006, HotSpot JVM y Java Development Kit (JDK) fueron licenciados bajo la GNU General Public License (GPL) versión 2. [16] Este es el código que se convirtió en parte de Java 7 . [17]

Plataformas compatibles [ editar ]

Mantenido por Oracle [ editar ]

Al igual que con todo el Java Development Kit (JDK), Oracle Corporation admite HotSpot en Windows , Linux , macOS y Solaris . Las arquitecturas de conjuntos de instrucciones (ISA) admitidas son IA-32 , x86-64 , ARMv7 VFP, ARMv8 y SPARC (solo Solaris). [18]

Puertos de terceros [ editar ]

Los puertos también están disponibles por terceros para varios otros sistemas operativos Unix . Se admiten varias arquitecturas de hardware diferentes, incluidas x86, PowerPC y SPARC (solo Solaris).

Portar HotSpot es difícil ya que el código, aunque está escrito principalmente en C ++ , contiene mucho lenguaje ensamblador . [19] Para remediar esto, el proyecto IcedTea ha desarrollado un puerto genérico del intérprete HotSpot llamado Hotspot de ensamblador cero (o cero ), casi sin código ensamblador. Este puerto está diseñado para una fácil adaptación del componente de intérprete de HotSpot a cualquier arquitectura de procesador Linux . El código de Hotspot de ensamblador cero se usa para todos los puertos de arquitectura que no son x86 de HotSpot ( PowerPC , Itanium ( IA-64), S390 y ARM ) desde la versión 1.6. [20] [21] [22]

Ver también [ editar ]

  • Lista de máquinas virtuales Java
  • Comparación de máquinas virtuales Java
  • Rendimiento de Java
  • OpenJDK
  • Da Vinci Machine , un proyecto para crear un prototipo de la extensión de la JVM para agregar soporte para lenguajes de programación dinámicos

Referencias [ editar ]

  1. ^ a b c "Sun anuncia la disponibilidad del motor de rendimiento de Java HotSpot" . Comunicado de prensa . Sun Microsystems . Consultado el 26 de marzo de 2013 .
  2. ^ Servicios, personal de crónica y noticias (19 de febrero de 1997). "SOL MICRO COMPRA LONGVIEW" . SFGATE . Consultado el 5 de noviembre de 2020 .
  3. ^ "Cliff Click en Pauseless GC, Zing, JVM Languages ​​de Azul" . InfoQ. 2011-01-20 . Consultado el 10 de mayo de 2016 . [...] Anamorphic fue adquirido 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.
  4. ^ Lewis, JP (2004). "Rendimiento de Java versus C ++" . Archivado desde el original el 24 de abril de 2020 . Consultado el 3 de octubre de 2007 .
  5. ^ Shankland, Stephen (18 de febrero de 1999). "HotSpot finalmente deja su huella" . Cnet .
  6. ^ "Sun Microsystems lanza la plataforma Java del lado del cliente más rápida hasta la fecha" . Sun Microsystems. 2000-05-08 . Consultado el 3 de octubre de 2007 .
  7. ^ "Mejoras en el rendimiento de la máquina virtual Java ™ HotSpot" . docs.oracle.com .
  8. ^ "Mejoras en el rendimiento de la máquina virtual Java ™ HotSpot" . docs.oracle.com .
  9. ^ "El grupo HotSpot" . Sun Microsystems. 2007 . Consultado el 3 de octubre de 2007 . Hay casi 1500 archivos fuente y de encabezado C / C ++, que comprenden casi 250,000 líneas de código
  10. ^ "Principal - ZGC" . Wiki de OpenJDK .
  11. ^ "Guía de ajuste de recolección de basura de máquina virtual HotSpot (Java 14)" . Centro de ayuda de Oracle .
  12. ^ "Opciones de Java HotSpot VM" . Sun Microsystems . Consultado el 8 de febrero de 2009 .
  13. Mocker, Joseph D. (28 de agosto de 2007). "Una colección de opciones de JVM" . Archivado desde el original el 30 de abril de 2011 . Consultado el 8 de febrero de 2009 .
  14. Maximovich, Dmitri. "La lista más completa de opciones -XX para Java 6 JVM" . Archivado desde el original el 30 de enero de 2010 . Consultado el 8 de febrero de 2009 .
  15. Nutter, Charles (29 de enero de 2009). "Mis banderas favoritas de Hotspot JVM" . Consultado el 8 de febrero de 2009 .
  16. ^ "Sun Open Source Java Technology y publica el código fuente bajo la licencia GPL versión dos a través de comunidades NetBeans y Java.net" . Sun Microsystems. 2006-11-13. Archivado desde el original el 9 de febrero de 2009 . Consultado el 6 de mayo de 2017 .
  17. ^ JDK7 , dom .
  18. ^ "Configuraciones de sistema certificadas Oracle JDK 8 y JRE 8" . Oracle Corporation . Consultado el 18 de mayo de 2017 .
  19. Gary, Benson (6 de noviembre de 2007). "Guía de Gary para portar IcedTea" . Archivado desde el original el 12 de julio de 2012 . Consultado el 26 de enero de 2008 .
  20. Gary, Benson (1 de febrero de 2008). "1 de febrero de 2008" . Archivado desde el original el 10 de julio de 2012 . Consultado el 3 de febrero de 2008 .
  21. Andrew, Haley (31 de enero de 2008). "Hacer que el ensamblador cero sea el predeterminado en ppc" . Consultado el 3 de febrero de 2008 .
  22. Lilian, Angel (13 de febrero de 2008). "¡IcedTea 1.6 lanzado con soporte Zero-assembly y JNLP!" . Red Hat . Consultado el 13 de febrero de 2008 .

Enlaces externos [ editar ]

  • Página web oficial
  • Una lista de opciones de HotSpot VMO
  • La especificación de la máquina virtual de Java
  • Historia del equipo Strongtalk-HotSpot original
  • "Sun anuncia la disponibilidad de Java Hotspot Performance Engine" . Archivado desde el original el 18 de diciembre de 2006 . Consultado el 27 de marzo de 2014 .CS1 maint: bot: estado de URL original desconocido ( enlace )
  • Repositorio de desarrollo de código fuente HotSpot Mercurial (sistema de control de versiones) para JDK8