HotSpot

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

Java Virtual Machine

Разработчик

Oracle (ранее Sun Microsystems)

Написана на

C++

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

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

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

16.3-b01

Лицензия

GNU General Public License

Сайт

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

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

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