HotSpot

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
HotSpot
Тип

Java Virtual Machine

Разработчик

Oracle (ранее Sun Microsystems)

Написана на

C++

Операционная система

Кроссплатформенное ПО

Последняя версия

16.3-b01

Лицензия

GNU General Public License

Сайт

http://openjdk.java.net/groups/hotspot/

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-версией, уступая при этом последней в производительности.

JVM флаги[править | править вики-текст]

HotSpot поддерживает большое количество аргументов командной строки (англ.) для настройки виртуальной машины при запуске. Некоторые из них стандартные и поддерживаются другими реализациями JVM, другие же специфичны и не поддерживаются другими виртуальными машинами (опции которые начинаются с -X или -XX — нестандартные)[5][6][7][8].

Лицензия[править | править вики-текст]

13 ноября 2006 года виртуальная машина и JDK от Sun Microsystems были открыты[9] под лицензией GPL v2 (см. Sun’s OpenJDK Hotspot page). Этот код станет частью Java 7.

Поддерживаемые платформы[править | править вики-текст]

Поддерживаемые Sun Microsystems[править | править вики-текст]

Что касается 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].

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Sun's Gosling Previews Hotspot Java Virtual Machine. ComputerGram (13 февраля 1998). Проверено 25 июля 2010.
  2. Sun Microsystems releases fastest client-side Java platform to date. Sun Microsystems (8 мая 2000). Проверено 25 июля 2010. Архивировано из первоисточника 3 мая 2012.
  3. Lewis, J.P. Performance of Java versus C++ (2004). Проверено 25 июля 2010. Архивировано из первоисточника 3 мая 2012.
  4. The HotSpot Group. Sun Microsystems (2007). — «There are nearly 1500 C/C++ header and source files, comprising almost 250,000 lines of code»  Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.
  5. Java HotSpot VM Options. Sun Microsystems. Проверено 8 февраля 2009. Архивировано из первоисточника 3 мая 2012.
  6. Mocker, Joseph D. A Collection of JVM Options (28 августа 2007). Проверено 20 июля 2010. Архивировано из первоисточника 13 октября 2012.
  7. Maximovich, Dmitri The most complete list of -XX options for Java 6 JVM. Проверено 20 июля 2010. Архивировано из первоисточника 13 октября 2012.
  8. Nutter, Charles My Favorite Hotspot JVM Flags (29 января 2009). Проверено 20 июля 2010. Архивировано из первоисточника 3 мая 2012.
  9. Sun Opens Java. Sun Microsystems (13 ноября 2006). Проверено 20 июля 2010. Архивировано из первоисточника 3 мая 2012.
  10. Supported System Configurations. Oracle. Проверено 1 января 2011. Архивировано из первоисточника 3 мая 2012.
  11. Gary, Benson Gary's guide to porting IcedTea (6 ноября 2007). Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.
  12. Gary, Benson 1st February 2008 (1 февраля 2008). Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.
  13. Andrew, Haley Making zero-assembler the default on ppc (31 января 2008). Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.
  14. Lilian, Angel IcedTea 1.6 Released with Zero-assembler and JNLP support!. Red hat (13 февраля 2008). Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.
  15. Gary, Benson 31 March 2008. Red hat (21 июля 2010). Проверено 30 мая 2008. Архивировано из первоисточника 3 мая 2012.
  16. Gary, Benson 28 May 2008. Red hat (28 мая 2008). — «Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we’ve been using»  Проверено 21 июля 2010. Архивировано из первоисточника 3 мая 2012.

Ссылки[править | править вики-текст]