HotSpot (виртуальная машина) - Википедия - HotSpot (virtual machine)

Виртуальная машина Java HotSpot
Оригинальный автор (ы)Sun Microsystems
Разработчики)Корпорация Oracle
изначальный выпуск27 апреля 1999 г.; 21 год назад (1999-04-27)[1]
Стабильный выпуск
23.25-b01 / 1 января 2016 г.; 4 года назад (2016-01-01)
Написано вC ++, сборка
Операционная системаКроссплатформенность
ТипВиртуальная машина Java
ЛицензияПроприетарный (ранние версии), Стандартная общественная лицензия GNU (Текущий)
Интернет сайтopenjdk.Ява.сеть/ группы/ точка доступа

HotSpot, выпущенный как Механизм производительности Java HotSpot,[1] это Виртуальная машина Java за рабочий стол и сервер компьютеры, обслуживаемые и распространяемые Корпорация Oracle. Он отличается улучшенной производительностью с помощью таких методов, как своевременная компиляция и адаптивная оптимизация.

История

Механизм производительности Java HotSpot был выпущен 27 апреля 1999 г.[1] построены на технологиях из реализации языка программирования Болтовня названный Strongtalk, первоначально разработанная Longview Technologies, которая торговалась как Animorphic. Виртуальная машина Longview была основана на Себя виртуальная машина, с интерпретатором, заменяющим быстрый и немой первый компилятор. Когда Sun отменила проект Self, два ключевых человека, Урс Хёльцле и Ларс Бак покинул Sun, чтобы запустить Longview. В 1997 г. Sun Microsystems приобрел Animorphic.[2]

Вскоре после приобретения Animorphic Sun решила написать новый JIT-компилятор для виртуальной машины Java.[3] Этот новый компилятор дал начало названию HotSpot, полученный из поведения программного обеспечения: как оно работает Байт-код Java, как и в случае с собственной виртуальной машиной, HotSpot постоянно анализирует производительность программы для горячие точки которые выполняются часто или неоднократно. Затем они предназначены для оптимизация, что приводит к высокопроизводительному выполнению с минимумом накладных расходов для менее критичного к производительности кода. В одном отчете JVM победила некоторых C ++ или же C код в некоторых тестах.[4]

Первоначально доступно как надстройка для Java 1.2,[5] HotSpot стал JVM Sun по умолчанию в Java 1.3.[6]

Функции

JRE (первоначально от Sun, теперь от Oracle) включает две виртуальные машины, одна из которых называется Клиент и другие Сервер. Клиентская версия настроена на быструю загрузку. Он использует интерпретацию. Версия для сервера загружается медленнее, прилагая больше усилий для создания оптимизированных JIT-компиляции для получения более высокой производительности. Обе виртуальные машины компилируют только часто выполняемые методы, используя настраиваемое пороговое значение числа вызовов, чтобы решить, какие методы компилировать.

Многоуровневая компиляция, опция, представленная в Java 7, использует как клиентский, так и серверный компиляторы в тандеме, чтобы обеспечить более быстрое время запуска, чем серверный компилятор, но аналогичную или лучшую пиковую производительность.[7] Начиная с Java 8, для серверной виртуальной машины по умолчанию используется многоуровневая компиляция.[8]

HotSpot написан на C ++. По оценкам Sun, в 2007 году он содержал примерно 250 000 строк исходного кода.[9] Hotspot обеспечивает:

Флаги JVM

HotSpot поддерживает множество аргументы командной строки для вариантов исполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены в любом соответствующем Виртуальная машина Java; другие относятся только к HotSpot и могут отсутствовать в других JVM (параметры, начинающиеся с -X или -XX, нестандартны).[12][13][14][15]

Лицензия

13 ноября 2006 г. JVM HotSpot и Комплект для разработки Java (JDK) были лицензированы под Стандартная общественная лицензия GNU (GPL) версия 2.[16] Это код, который стал частью Java 7.[17]).

Поддерживаемые платформы

Поддерживается Oracle

Как и весь Комплект для разработки Java (JDK), HotSpot поддерживается Корпорация Oracle на Windows, Linux, macOS, и Солярис. Поддерживается Набор инструкций архитектуры (ISA) IA-32, x86-64, ARMv7 VFP, ARMv8 и SPARC (Только для Solaris).[18]

Порты сторонних производителей

Порты также доступны третьими сторонами для различных других Unix операционные системы. Поддерживаются несколько различных аппаратных архитектур, включая x86, PowerPC, и SPARC (только для Solaris).

Перенос HotSpot сложен как код, хотя в основном он написан на C ++, содержит много язык ассемблера.[19] Чтобы исправить это, Чай со льдом проект разработал общий порт HotSpot устный переводчик называется точка доступа с нулевым ассемблером (или же нуль), практически без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента интерпретатора HotSpot к любому Linux архитектура процессора. Кодекс точка доступа с нулевым ассемблером используется для всех не-x86 архитектура портов HotSpot (PowerPC, Itanium (IA-64 ), S390 и РУКА ) начиная с версии 1.6.[20][21][22]

Смотрите также

Рекомендации

  1. ^ а б c «Sun объявляет о выпуске механизма производительности Java HotSpot». Пресс-релиз. Sun Microsystems. Получено 26 марта 2013.
  2. ^ Услуги, хроники и новости (1997-02-19). "САН МИКРО ПОКУПАЕТ ДОЛГОСРОЧНО". SFGATE. Получено 2020-11-05.
  3. ^ «Клифф щелкните на языках Azul Pauseless GC, Zing, JVM». InfoQ. 2011-01-20. Получено 2016-05-10. [...] Anamorphic был приобретен Sun, поэтому первоначальная команда была в компании под названием Anamorphic, они пришли с технологией, которая была нацелена на Smalltalk, и они перенаправили ее на Java, и вскоре после этого они наняли меня, чтобы я сделал новый JIT для своей виртуальной машины.
  4. ^ Льюис, Дж. П. (2004). «Производительность Java по сравнению с C ++». Архивировано из оригинал на 2020-04-24. Получено 2007-10-03.
  5. ^ Шенкленд, Стивен (18 февраля 1999 г.). «HotSpot наконец-то оставляет свой след». Cnet.
  6. ^ «Sun Microsystems выпускает самую быструю клиентскую платформу Java на сегодняшний день». Sun Microsystems. 2000-05-08. Получено 2007-10-03.
  7. ^ «Повышение производительности виртуальной машины Java ™ HotSpot». docs.oracle.com.
  8. ^ «Повышение производительности виртуальной машины Java ™ HotSpot». docs.oracle.com.
  9. ^ «Группа HotSpot». Sun Microsystems. 2007 г.. Получено 2007-10-03. Существует около 1500 заголовочных и исходных файлов C / C ++, содержащих почти 250 000 строк кода.
  10. ^ «Главная - ЗГК». OpenJDK вики.
  11. ^ "Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)". Справочный центр Oracle.
  12. ^ "Параметры виртуальной машины Java HotSpot". Sun Microsystems. Получено 2009-02-08.
  13. ^ Мокер, Джозеф Д. (28 августа 2007 г.). «Коллекция параметров JVM». Архивировано из оригинал на 2011-04-30. Получено 2009-02-08.
  14. ^ Максимович, Дмитрий. «Самый полный список опций -XX для Java 6 JVM». Архивировано из оригинал на 30.01.2010. Получено 2009-02-08.
  15. ^ Наттер, Чарльз (2009-01-29). "Мои любимые флаги JVM Hotspot". Получено 2009-02-08.
  16. ^ «Sun Open Sources Java Technology и выпускает исходный код под лицензией GPL версии 2 через NetBeans и сообщества Java.net». Sun Microsystems. 2006-11-13. Архивировано из оригинал на 2009-02-09. Получено 2017-05-06.
  17. ^ JDK7, Солнце.
  18. ^ «Сертифицированные системные конфигурации Oracle JDK 8 и JRE 8». Корпорация Oracle. Получено 2017-05-18.
  19. ^ Гэри, Бенсон (2007-11-06). "Руководство Гэри по портированию IcedTea". Архивировано из оригинал на 2012-07-12. Получено 2008-01-26.
  20. ^ Гэри, Бенсон (1 февраля 2008 г.). «1 февраля 2008 г.». Архивировано из оригинал на 2012-07-10. Получено 2008-02-03.
  21. ^ Эндрю, Хейли (31.01.2008). "Сделать нулевой ассемблер по умолчанию на ppc". Получено 2008-02-03.
  22. ^ Лилиан, Ангел (13 февраля 2008). "IcedTea 1.6 выпущен с нулевым ассемблером и поддержкой JNLP!". Красная шляпа. Получено 2008-02-13.

внешняя ссылка