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 .
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]
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:
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, 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]
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]
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]
[...] 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.
Hay casi 1.500 archivos de encabezado y fuente C/C++, que comprenden casi 250.000 líneas de código.
{{cite web}}
: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )