Введение
Java виртуальная машина HotSpot, выпущенная как Java HotSpot Performance Engine, вскоре после приобретения Animorphic, компания Sun приняла решение разработать новый, более мощный JIT-компилятор (компилятор Just-In-Time) для Java виртуальной машины, получивший название HotSpot server compiler (внутреннее название C2). Его первоначальная разработка велась Клиффордом Кликом и являлась развитием его докторской диссертации по оптимизации компиляторов. Название HotSpot происходит от особенностей работы программного обеспечения: при выполнении Java байт-кода, подобно Self VM, HotSpot непрерывно анализирует производительность программы, выявляя "горячие точки" – участки кода, выполняемые часто или многократно. Эти участки затем оптимизируются, что обеспечивает высокую производительность при минимальных накладных расходах для менее критичного кода. По данным одного отчета, JVM показала результаты, превосходящие некоторые программы, написанные на C++ или C, в определенных тестах производительности. Изначально доступный как дополнение к Java 1.2, HotSpot стал JVM по умолчанию в Java 1.3.
HotSpot, released as Java HotSpot Performance Engine,
Shortly after acquiring Animorphic, Sun decided to write a new stronger just in time (JIT) compiler for the Java virtual machine, named HotSpot server compiler (internal name C2), which was initially developed by Clifford Click and was an extension of his PhD thesis on optimizing compilers. The compiler name HotSpot is derived from the software's behavior: as it runs Java bytecode, as with the Self VM, HotSpot continually analyzes the program's performance for hot spots which are executed often or repeatedly. These are then targeted for optimizing, leading to high performance execution with a minimum of overhead for less performance critical code. In one report, the JVM beat some C++ or C code in some benchmarks. Initially available as an add on for Java 1.2, HotSpot became the default Sun JVM in Java 1.3.
Флаги JVM
HotSpot поддерживает множество аргументов командной строки для настройки параметров запуска виртуальной машины. Некоторые из них являются стандартными и должны поддерживаться любой совместимой виртуальной машиной Java, другие же специфичны для HotSpot и могут отсутствовать в других JVM (опции, начинающиеся с X или XX, не являются стандартными).
Лицензия
13 ноября 2006 года виртуальная машина HotSpot (HotSpot JVM) и комплект разработки Java (Java Development Kit, JDK) были выпущены под лицензией GNU General Public License (GPL) версии 2. Этот код вошёл в состав Java 7.
Содержание Oracle
Как и вся Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle в операционных системах Windows, Linux и macOS. Поддерживаемые архитектуры наборов команд (ISA) — x86-64 и AArch64. Начиная с JDK 15, Solaris и SPARC больше не поддерживаются.
Порты третьих лиц
Порты также доступны от сторонних разработчиков для различных других операционных систем Unix. Поддерживаются несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только для Solaris). Портирование HotSpot является сложной задачей, поскольку значительная его часть написана практически полностью на языке ассемблера, хотя некоторые разделы реализованы на чистом, соответствующем стандартам ISO C++. Для решения этой проблемы проект IcedTea разработал универсальный порт интерпретатора HotSpot, получивший название HotSpot без ассемблера (или zero), практически не содержащий кода на ассемблере. Этот порт предназначен для упрощения адаптации интерпретаторной части HotSpot к любой архитектуре процессоров Linux. Код HotSpot без ассемблера используется для всех портов HotSpot, отличных от архитектуры x86 (PowerPC, Itanium (IA 64), S390 и ARM), начиная с версии 1.6.