04-09-2023
Тип | |
---|---|
Разработчик |
Oracle (ранее Sun Microsystems) |
Написана на | |
Операционная система | |
Последняя версия |
16.3-b01 |
Лицензия | |
Сайт |
Sun's OpenJDK Hotspot page |
HotSpot — это основная виртуальная машина Java для настольных компьютеров и серверов, выпускаемая корпорацией Oracle. Обладает технологиями динамической компиляции JIT и адаптивной оптимизации (англ.), предназначенными для повышения производительности.
Содержание |
HotSpot, которая впервые была выпущена 27 апреля 1999 года, была изначально разработкой Longview Technologies, небольшой компании, основанной в 1994 году. В 1997 году компанию купила Sun Microsystems[1]. Сначала HotSpot использовали как дополнение к Java 1.2, однако, эта виртуальная машина стала основной с выходом Java 1.3[2]. Название «HotSpot» происходит из того факта, что, выполняя байткод Java, эта JVM непрерывно анализирует выполняемую программу на так называемые «горячие места» (англ. «hot spots»), которые часто повторно выполняются. Эти действия направлены на оптимизацию выполнения этих участков кода, выделяя им больше ресурсов, в то же время уменьшая непроизводительные затраты для выполнения менее ресуркоемкого кода. HotSpot часто провозглашают самой производительной виртуальной машиной Java в своем классе. В теории с помощью адаптивной оптимизации программа, которая выполняется в этой JVM может быть более производительной, чем эквивалентная ей программа в машинных кодах[3].
Виртуальная машина HotSpot написана на C++. Как указано на домашней странице HotSpot, размер её исходного кода составляет 250,000 строк[4]. Hotspot предоставляет следующий функционал:
Client-версия виртуальной машины характеризуется меньшим временем запуска приложений и меньшим потреблением памяти по сравнению с Server-версией, уступая при этом последней в производительности.
HotSpot поддерживает большое количество аргументов командной строки (англ.) для настройки виртуальной машины при запуске. Некоторые из них стандартные и поддерживаются другими реализациями JVM, другие же специфичны и не поддерживаются другими виртуальными машинами (опции которые начинаются с -X
или -XX
— нестандартные)[5][6][7][8].
Sun’s OpenJDK Hotspot page). Этот код станет частью Java 7.
Что касается JDK, HotSpot на данный момент поддерживается Oracle в операционных системах Microsoft Windows, Linux, и Solaris. Поддержка ISAs представлена платформами IA-32, x86-64 и SPARC (только в Solaris).[10]
Так же доступны порты сторонних разработчиков для Mac OS X и других операционных систем Unix. Поддерживается несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только в Solaris).
Портирование HotSpot усложнено тем, что данная виртуальная машина написана в основном на C++ с использованием вставок на ассемблере[11]. Чтобы избежать этого, проект IcedTea разработал общий порт интерпретатора HotSpot под названием zero-assembler Hotspot (или просто zero) который практически не содержит ассемблерного кода. Данный порт разрабатывается с целью достижения портируемости HotSpot на различные процессорные архитектуры Linux, что сделает его практически неограниченно портируемым. Код zero-assembler Hotspot используется для всех архитектур отличных от x86, (PPC, IA64, S390 и ARM) начиная с версии 1.6[12][13][14].
Гари Бенсон (англ. Gary Benson), разработчик IcedTea, в данный момент разрабатывает платформонезависимую реализацию динамической компиляции JIT под названием Shark для HotSpot, с использованием LLVM, в дополнение к zero-assembler Hotspot[15][16].
Виртуальные машины Java | |
---|---|
Sun/Oracle | JVM • HotSpot • KVM • OpenJDK • Maxine VM |
Сообщества и основные реализации | Apache Harmony • GCJ • JamVM • Jikes RVM • Kaffe • IKVM.NET • IBM J9 • JRockit (BEA/Oracle) |
Встроенные | Mysaifu • Squawk (Sun) • JamaicaVM • Mika VM |
Другие | CACAO • JX • JNode • другие… |
Неподдерживаемые | Microsoft JVM • SableVM • Jupiter • Jaos |
HotSpot.