HotSpot , выпущенный как Java HotSpot Performance Engine , [1] — это виртуальная машина Java для настольных и серверных компьютеров, разработанная Sun Microsystems , которая была куплена и стала подразделением Oracle Corporation в 2010 году. Его возможности повышают производительность с помощью таких методов, как компиляция «на лету» и адаптивная оптимизация . Это де-факто виртуальная машина Java, служащая эталонной реализацией языка программирования Java .
Java HotSpot Performance Engine был выпущен 27 апреля 1999 года [1], построенный на технологиях из реализации языка программирования Smalltalk под названием Strongtalk , изначально разработанного Longview Technologies, которая торговалась как Animorphic. Виртуальная машина Longview была основана на виртуальной машине Self , с интерпретатором, заменяющим быстрый и глупый первый компилятор. Когда Sun отменила проект Self, два ключевых человека, Урс Хёльцле и Ларс Бак, покинули Sun, чтобы начать Longview. В 1997 году Sun Microsystems приобрела Animorphic. [2]
Вскоре после приобретения Animorphic, Sun решила написать новый более сильный компилятор just-in-time (JIT) для виртуальной машины Java [3] , названный HotSpot server compiler (внутреннее название C2), который изначально был разработан Клиффордом Клик [4] и был расширением его докторской диссертации по оптимизации компиляторов. [5] Название компилятора HotSpot происходит от поведения программного обеспечения: поскольку он запускает байт-код Java , как и в случае с Self VM, HotSpot постоянно анализирует производительность программы на предмет горячих точек , которые выполняются часто или многократно. Затем они становятся целью для оптимизации , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла некоторые коды C++ или C в некоторых тестах. [6]
Первоначально доступный как дополнение для Java 1.2, [7] HotSpot стал стандартной виртуальной машиной Sun JVM в Java 1.3. [8]
JRE (первоначально от Sun, теперь от Oracle) включает в себя две виртуальные машины, одна называется Client , а другая Server . Версия Client настроена на быструю загрузку. Она использует интерпретацию. Версия Server загружается медленнее, прилагая больше усилий для создания высокооптимизированных JIT-компиляций для достижения более высокой производительности. Обе виртуальные машины компилируют только часто запускаемые методы, используя настраиваемый порог количества вызовов для определения того, какие методы компилировать.
Многоуровневая компиляция, опция, представленная в Java 7, использует как клиентский, так и серверный компиляторы в тандеме для обеспечения более быстрого времени запуска, чем серверный компилятор, но аналогичной или лучшей пиковой производительности. [9] Начиная с Java 8, многоуровневая компиляция является значением по умолчанию для серверной виртуальной машины. [10]
HotSpot написан на C++ и Assembly. В 2007 году Sun оценила, что он содержит около 250 000 строк исходного кода. [11] Hotspot предоставляет:
HotSpot поддерживает множество аргументов командной строки для опций выполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены в любой соответствующей виртуальной машине Java ; другие специфичны для HotSpot и могут отсутствовать в других JVM (опции, начинающиеся с -X или -XX, являются нестандартными). [14] [15] [16] [17]
13 ноября 2006 года HotSpot JVM и Java Development Kit (JDK) были лицензированы в соответствии с лицензией GNU General Public License (GPL) версии 2. [18] Это код, который стал частью Java 7. [ 19]
Как и весь Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle на Windows , Linux и macOS . Поддерживаемые архитектуры наборов инструкций (ISA) — x86-64 и AArch64 . [20] Начиная с JDK 15, Solaris и SPARC больше не поддерживаются. [21]
Порты также доступны третьими лицами для различных других операционных систем Unix . Поддерживаются несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только Solaris).
Портирование HotSpot затруднено, так как большая его часть почти полностью написана на языке ассемблера , [22] хотя несколько его разделов также написаны на чистом стандартном ISO C++ . Чтобы исправить это, проект IcedTea разработал общий порт интерпретатора HotSpot , называемый нулевой ассемблер Hotspot (или нулевой ), почти без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента интерпретатора HotSpot к любой архитектуре процессора Linux . Код нулевого ассемблера Hotspot используется для всех портов HotSpot для архитектуры, отличной от x86 ( PowerPC , Itanium ( IA-64 ), S390 и ARM ) начиная с версии 1.6. [23] [24] [25]
[...] Anamorphic была приобретена Sun, поэтому первоначальная команда находилась в компании Anamorphic, они пришли с технологией, которая была нацелена на Smalltalk, и перенацелили ее на Java, и вскоре после этого они наняли меня, чтобы сделать новый JIT для их виртуальной машины.
Существует около 1500 заголовочных и исходных файлов C/C++, содержащих почти 250 000 строк кода.
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )