stringtranslate.com

HotSpot (máquina virtual)

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 comprada y se convirtió en una división de Oracle Corporation en 2010. Sus características mejoraron el rendimiento a través de métodos como simplemente Compilación en tiempo y optimización adaptativa . Es la máquina virtual Java de facto y sirve como implementación de referencia del lenguaje de programación Java .

Historia

Java HotSpot Performance Engine fue lanzado el 27 de abril de 1999, [1] basado en tecnologías de una implementación del lenguaje de programación Smalltalk llamado Strongtalk , desarrollado originalmente por Longview Technologies, que se comercializaba como Animorphic. La máquina virtual Longview se basó en la máquina virtual Self , con un intérprete que reemplazó al rápido y tonto primer compilador. 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. [2]

Poco después de adquirir Animorphic, Sun decidió escribir un nuevo compilador justo a tiempo (JIT) más potente para la máquina virtual Java, [3] llamado compilador de servidor HotSpot (nombre interno C2), que fue desarrollado inicialmente por Clifford Click [4]. y fue una extensión de su tesis doctoral sobre optimización de compiladores. [5] El nombre del compilador HotSpot se deriva del comportamiento del software: a medida que ejecuta el código de bytes de Java , al igual que con Self VM, HotSpot analiza continuamente el rendimiento del programa en busca de puntos calientes que se ejecutan con frecuencia o repetidamente. Luego, estos se optimizan , lo que lleva a una ejecución de alto rendimiento con una sobrecarga mínima 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. [6]

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

Características

JRE (originalmente de Sun, ahora de Oracle) presenta dos máquinas virtuales, una llamada Cliente y la otra Servidor . La versión del Cliente está optimizada para una carga rápida. Hace uso de la interpretación. La versión del servidor se carga más lentamente, lo que pone 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 y utilizan 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 con un rendimiento máximo similar o mejor. [9] A partir de Java 8, la compilación por niveles es la opción predeterminada para la máquina virtual del servidor. [10]

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

banderas de 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 es posible que no se encuentren en otras JVM (las opciones que comienzan con -X o -XX no son estándar). [14] [15] [16] [17]

Licencia

El 13 de noviembre de 2006, HotSpot JVM y Java Development Kit (JDK) obtuvieron la licencia GNU General Public License (GPL) versión 2. [18] Este es el código que pasó a formar parte de Java 7 . [19]

Plataformas compatibles

Mantenido por Oráculo

Al igual que con todo el kit de desarrollo de Java (JDK), HotSpot cuenta con el respaldo de Oracle Corporation en Windows , Linux y macOS . Las arquitecturas de conjunto de instrucciones (ISA) admitidas son x86-64 y AArch64 . [20] Desde JDK 15, Solaris y SPARC ya no son compatibles. [21]

Puertos por terceros

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

Migrar HotSpot es difícil, ya que gran parte está escrito casi en su totalidad en lenguaje ensamblador , [22] aunque varias secciones también están escritas en ISO C++ puramente compatible con los estándares . 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á pensado para una fácil adaptación del componente intérprete de HotSpot a cualquier arquitectura de procesador Linux . El código de Hotspot de ensamblador cero se utiliza 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. [23] [24] [25]

Ver también

Referencias

  1. ^ abc "Sun anuncia la disponibilidad de Java HotSpot Performance Engine". Presione soltar . Microsistemas solares. Archivado desde el original el 1 de noviembre de 2013 . Consultado el 26 de marzo de 2013 .
  2. ^ Servicios, Crónica Staff y Noticias (1997-02-19). "SUN MICRO COMPRA LONGVIEW". PUERTA SF . Consultado el 5 de noviembre de 2020 .
  3. ^ "Cliff Click en los lenguajes GC, Zing y JVM sin pausa de Azul". InformaciónQ. 2011-01-20 . Consultado el 10 de mayo de 2016 . [...] Sun adquirió Anamorphic, por lo que el equipo original estaba en una empresa llamada Anamorphic, vinieron con una tecnología dirigida a Smalltalk y la reorientaron para Java y poco después me contrataron para hacer una nueva JIT para su máquina virtual.
  4. ^ Haga clic, Clifford (abril de 2001). "El compilador del servidor java hotspotTM". JVM'01: Actas del Simposio de 2001 sobre el Simposio de investigación y tecnología de máquinas virtuales JavaTM . 1 : 1.
  5. ^ "Cliff Click: el mar de nodos y el HotSpot JIT".
  6. ^ Lewis, JP (2004). "Rendimiento de Java frente a C++". Archivado desde el original el 24 de abril de 2020 . Consultado el 3 de octubre de 2007 .
  7. ^ Shankland, Stephen (18 de febrero de 1999). "HotSpot finalmente deja su huella". Cnet .
  8. ^ "Sun Microsystems lanza la plataforma Java del lado del cliente más rápida hasta la fecha". Microsistemas solares. 2000-05-08 . Consultado el 3 de octubre de 2007 .
  9. ^ "Mejoras en el rendimiento de la máquina virtual Java ™ HotSpot". docs.oracle.com .
  10. ^ "Mejoras en el rendimiento de la máquina virtual Java ™ HotSpot". docs.oracle.com .
  11. ^ "El grupo HotSpot". Microsistemas solares. 2007 . Consultado el 3 de octubre de 2007 . Hay casi 1.500 archivos de encabezado y fuente C/C++, que comprenden casi 250.000 líneas de código.
  12. ^ "Principal - ZGC". Wiki OpenJDK .
  13. ^ "Guía de ajuste de recolección de basura de la máquina virtual HotSpot (Java 14)". Centro de ayuda de Oracle .
  14. ^ "Opciones de máquina virtual Java HotSpot". Microsistemas solares . Consultado el 8 de febrero de 2009 .
  15. ^ Burlador, 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 .
  16. ^ 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 .
  17. ^ Loco, Charles (29 de enero de 2009). "Mis indicadores JVM de puntos de acceso favoritos" . Consultado el 8 de febrero de 2009 .
  18. ^ "Sun Open Sources tecnología Java y publica código fuente bajo licencia GPL versión dos a través de las comunidades NetBeans y Java.net". Microsistemas solares. 2006-11-13. Archivado desde el original el 9 de febrero de 2009 . Consultado el 6 de mayo de 2017 .
  19. JDK7 Archivado el 15 de diciembre de 2016 en Wayback Machine , dom.
  20. ^ "Configuraciones del sistema certificado Oracle JDK 17". Corporación Oráculo . Consultado el 1 de febrero de 2021 .
  21. ^ "JEP 381: Eliminar los puertos Solaris y SPARC". openjdk.java.net .
  22. ^ Benson, Gary (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 .
  23. ^ Benson, Gary (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 .
  24. ^ Haley, Andrés (31 de enero de 2008). "Hacer del ensamblador cero el valor predeterminado en ppc" . Consultado el 1 de febrero de 2022 .
  25. ^ Ángel, Lilian (13 de febrero de 2008). "¡Lanzamiento de IcedTea 1.6 con compatibilidad con Zero-assembler y JNLP!". Sombrero rojo . Consultado el 13 de febrero de 2008 .

enlaces externos