HotSpot , выпущенный как Java HotSpot Performance Engine , [1] представляет собой виртуальную машину Java для настольных и серверных компьютеров, разработанную Sun Microsystems и в настоящее время поддерживаемую и распространяемую Oracle Corporation . Он отличается улучшенной производительностью благодаря таким методам, как своевременная компиляция и адаптивная оптимизация . Это де-факто виртуальная машина 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 решила написать новый JIT-компилятор для виртуальной машины Java. [3] Этот новый компилятор дал начало названию HotSpot , полученному из поведения программного обеспечения: при запуске байт-кода Java , как и в случае с Self VM, HotSpot постоянно анализирует производительность программы на наличие горячих точек , которые выполняются часто или неоднократно. Затем они направляются на оптимизацию , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла код C++ или C в некоторых тестах. [4]
Первоначально доступный как надстройка для Java 1.2, [5] HotSpot стал JVM Sun по умолчанию в Java 1.3. [6]
JRE (первоначально от Sun, теперь от Oracle) включает две виртуальные машины: одна называется Client , а другая — Server . Версия Клиента настроена на быструю загрузку. Он использует интерпретацию. Версия Server загружается медленнее, что требует больше усилий для создания высокооптимизированных JIT-компиляций для повышения производительности. Обе виртуальные машины компилируют только часто используемые методы, используя настраиваемое пороговое значение количества вызовов, чтобы решить, какие методы компилировать.
Многоуровневая компиляция, опция, представленная в Java 7, использует как клиентский, так и серверный компиляторы в тандеме, чтобы обеспечить более быстрое время запуска, чем серверный компилятор, но аналогичную или лучшую пиковую производительность. [7] Начиная с Java 8, многоуровневая компиляция используется по умолчанию для виртуальной машины сервера. [8]
HotSpot написан на C++ и ассемблере. По оценкам Sun, в 2007 году он содержал около 250 000 строк исходного кода. [9] Точка доступа обеспечивает:
HotSpot поддерживает множество аргументов командной строки для параметров выполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены на любой соответствующей виртуальной машине Java ; другие специфичны для HotSpot и не могут быть найдены в других JVM (параметры, начинающиеся с -X или -XX, являются нестандартными). [12] [13] [14] [15]
13 ноября 2006 года HotSpot JVM и Java Development Kit (JDK) были лицензированы по лицензии GNU General Public License (GPL) версии 2. [16] Этот код стал частью Java 7 . [17]
Как и весь пакет Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle Corporation в Windows , Linux и macOS . Поддерживаемые архитектуры набора команд (ISA): x86-64 и AArch64 . [18] Начиная с JDK 15, Solaris и SPARC больше не поддерживаются. [19]
Порты также доступны третьими лицами для различных других операционных систем Unix . Поддерживается несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только Solaris).
Портирование HotSpot затруднено, так как большая его часть почти полностью написана на языке ассемблера , [20] хотя некоторые его разделы также написаны на чисто совместимом со стандартами ISO C++ . Чтобы исправить это, проект IcedTea разработал общий порт интерпретатора HotSpot под названием Hotspot с нулевым ассемблером (или нулевым ), почти без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента-интерпретатора HotSpot к любой процессорной архитектуре Linux . Код Hotspot с нулевым ассемблером используется для всех портов HotSpot с архитектурой, отличной от x86 ( PowerPC , Itanium ( IA-64 ), S390 и ARM ), начиная с версии 1.6. [21] [22] [23]
[...] Anamorphic была приобретена Sun, поэтому первоначальная команда работала в компании под названием Anamorphic, они пришли с технологией, ориентированной на Smalltalk, переориентировали ее на Java и вскоре после этого наняли меня для создания новой JIT для своей виртуальной машины.
Существует около 1500 заголовочных и исходных файлов C/C++, содержащих почти 250 000 строк кода.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )