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 la compilación justo a tiempo y la optimización adaptativa . Es la máquina virtual Java de facto, que sirve como implementación de referencia del lenguaje de programación Java .
El motor de rendimiento Java HotSpot 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 basaba en la máquina virtual Self , con un intérprete que reemplazaba 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 JIT (just-in-time) 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 la optimización de compiladores. [5] El nombre del compilador HotSpot se deriva del comportamiento del software: mientras ejecuta el bytecode de Java , como con la Self VM, HotSpot analiza continuamente el rendimiento del programa en busca de puntos calientes que se ejecutan a menudo o repetidamente. Luego, se seleccionan para optimizarlos , 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ó a 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]
JRE (originalmente de Sun, ahora de Oracle) cuenta con dos máquinas virtuales, una llamada Client y la otra Server . La versión Client está optimizada para una carga rápida. Hace uso de la interpretación. La versión Server se carga más lentamente, poniendo más esfuerzo en producir compilaciones JIT altamente optimizadas para obtener un mayor rendimiento. Ambas máquinas virtuales compilan solo métodos que se ejecutan con frecuencia, utilizando un umbral de conteo de invocaciones configurable para decidir qué métodos compilar.
La compilación por niveles, una opción introducida en Java 7, utiliza tanto el compilador del cliente como el 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. [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 Assembly. En 2007, Sun estimó que contenía aproximadamente 250.000 líneas de código fuente. [11] Hotspot ofrece:
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]
El 13 de noviembre de 2006, la JVM HotSpot y el Java Development Kit (JDK) fueron licenciados bajo la Licencia Pública General GNU (GPL) versión 2. [18] Este es el código que pasó a formar parte de Java 7. [ 19]
Al igual que todo el Java Development Kit (JDK), Oracle Corporation admite HotSpot en Windows , Linux y macOS . Las arquitecturas de conjuntos de instrucciones (ISA) admitidas son x86-64 y AArch64 . [20] Desde JDK 15, Solaris y SPARC ya no son compatibles. [21]
También hay puertos disponibles de terceros para varios otros sistemas operativos Unix . Se admiten varias arquitecturas de hardware diferentes, incluidas x86, PowerPC y SPARC (solo Solaris).
La portabilidad de HotSpot es difícil, ya que gran parte de él está escrito casi en su totalidad en lenguaje ensamblador , [22] aunque varias secciones del mismo también están escritas en C++ ISO que cumple con los estándares . Para remediar esto, el proyecto IcedTea ha desarrollado una portabilidad genérica del intérprete de HotSpot llamada Hotspot de ensamblador cero (o zero ), con casi ningún código ensamblador. Esta portabilidad está pensada 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 todas las portabilidades de arquitectura no x86 de HotSpot ( PowerPC , Itanium ( IA-64 ), S390 y ARM ) desde la versión 1.6. [23] [24] [25]
[...] Anamorphic fue adquirida por Sun, por lo que el equipo original estaba en una empresa llamada Anamorphic, llegaron con una tecnología que estaba orientada a Smalltalk y la reorientaron para Java y me contrataron poco después para hacer un nuevo JIT para su máquina virtual.
Hay casi 1500 archivos de código fuente y de encabezado de C/C++, que comprenden casi 250 000 líneas de código.
{{cite web}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )