Ведущий раздел этой статьи может быть слишком коротким, чтобы адекватно резюмировать ее ключевые моменты . ( Октябрь 2018 г. ) |
Автор (ы) оригинала | Sun Microsystems |
---|---|
Разработчики) | Корпорация Oracle |
изначальный выпуск | 27 апреля 1999 г . [1] |
Стабильный выпуск | 23.25-b01 / 1 января 2016 г . |
Написано в | C ++ , Сборка |
Операционная система | Кроссплатформенность |
Тип | Виртуальная машина Java |
Лицензия | Собственная (ранние версии), Стандартная общественная лицензия GNU (текущая) |
Интернет сайт | openjdk |
HotSpot , выпущенный как Java HotSpot Performance Engine , [1] представляет собой виртуальную машину Java для настольных и серверных компьютеров, поддерживаются и распространяются корпорацией Oracle . Он отличается улучшенной производительностью с помощью таких методов, как своевременная компиляция и адаптивная оптимизация .
История [ править ]
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 , как и в случае с собственной виртуальной машиной, 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 обеспечивает:
- Java Загрузчик классов
- Байткод Java переводчик
- Клиентские и серверные виртуальные машины, оптимизированные для соответствующего использования
- Несколько сборщиков мусора (включая ZGC с очень малым временем паузы) [10] [11]
- Набор вспомогательных библиотек времени выполнения
Флаги JVM [ править ]
HotSpot поддерживает множество аргументов командной строки для параметров выполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены на любой соответствующей виртуальной машине Java ; другие относятся к HotSpot и могут отсутствовать в других JVM (параметры, начинающиеся с -X или -XX, нестандартны). [12] [13] [14] [15]
Лицензия [ править ]
13 ноября 2006 г. HotSpot JVM и Java Development Kit (JDK) были лицензированы в соответствии с Стандартной общественной лицензией GNU (GPL) версии 2. [16] Это код, который стал частью Java 7 . [17]
Поддерживаемые платформы [ править ]
Поддерживается Oracle [ править ]
Как и весь Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle в Windows , Linux , macOS и Solaris . Поддерживаемые архитектуры набора команд (ISA): IA-32 , x86-64 , ARMv7 VFP, ARMv8 и SPARC (только для Solaris). [18]
Порты сторонних производителей [ править ]
Сторонние производители также могут использовать порты для различных других операционных систем Unix . Поддерживается несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только для Solaris).
Перенос HotSpot затруднен, поскольку код, хотя и в основном написан на C ++ , содержит много языка ассемблера . [19] Чтобы исправить это, проект IcedTea разработал общий порт интерпретатора HotSpot, называемый Hotspot с нулевым ассемблером (или нулевым ), практически без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента интерпретатора HotSpot к любой архитектуре процессора Linux . Код Hotspot с нулевым ассемблером используется для всех портов HotSpot с архитектурой не x86 ( PowerPC , Itanium ( IA-64), S390 и ARM ) начиная с версии 1.6. [20] [21] [22]
См. Также [ править ]
- Список виртуальных машин Java
- Сравнение виртуальных машин Java
- Производительность Java
- OpenJDK
- Da Vinci Machine , проект прототипа расширения JVM для добавления поддержки динамических языков программирования
Ссылки [ править ]
- ^ a b c «Sun объявляет о доступности механизма производительности Java HotSpot» . Пресс-релиз . Sun Microsystems . Проверено 26 марта 2013 года .
- ^ Услуги, Хроники Персонал и Новости (1997-02-19). «СОЛНЦЕ МИКРО ПОКУПАЕТ ДОЛГОСРОЧНО» . SFGATE . Проверено 5 ноября 2020 .
- ^ «Клифф нажмите на Azul's Pauseless GC, Zing, JVM Languages» . InfoQ. 2011-01-20 . Проверено 10 мая 2016 .
[...] Anamorphic был приобретен Sun, так что первоначальная команда была в компании под названием Anamorphic, они пришли с технологией, которая была нацелена на Smalltalk, и они перенаправили ее на Java, и вскоре после этого они наняли меня, чтобы я сделал новый JIT для своей виртуальной машины.
- ^ Льюис, JP (2004). «Производительность Java по сравнению с C ++» . Архивировано из оригинала на 2020-04-24 . Проверено 3 октября 2007 .
- ^ Шенкленд, Стивен (18 февраля 1999). «HotSpot наконец-то оставляет свой след» . Cnet .
- ^ «Sun Microsystems выпускает самую быструю клиентскую платформу Java на сегодняшний день» . Sun Microsystems. 2000-05-08 . Проверено 3 октября 2007 .
- ^ «Улучшения производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
- ^ «Улучшения производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
- ^ "Группа HotSpot" . Sun Microsystems. 2007 . Проверено 3 октября 2007 .
Существует около 1500 заголовочных и исходных файлов C / C ++, содержащих почти 250 000 строк кода.
- ^ "Главная - ZGC" . OpenJDK Wiki .
- ^ "Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)" . Справочный центр Oracle .
- ^ «Параметры виртуальной машины Java HotSpot» . Sun Microsystems . Проверено 8 февраля 2009 .
- ^ Мокер, Джозеф Д. (2007-08-28). «Коллекция опций JVM» . Архивировано из оригинала на 2011-04-30 . Проверено 8 февраля 2009 .
- ↑ Максимович, Дмитрий. «Самый полный список опций -XX для Java 6 JVM» . Архивировано из оригинала на 2010-01-30 . Проверено 8 февраля 2009 .
- ^ Наттер, Чарльз (2009-01-29). «Мои любимые флаги JVM Hotspot» . Проверено 8 февраля 2009 .
- ^ «Sun Open Sources Java Technology и выпускает исходный код под лицензией GPL версии 2 через NetBeans и сообщества Java.net» . Sun Microsystems. 2006-11-13. Архивировано из оригинала на 2009-02-09 . Проверено 6 мая 2017 .
- ^ JDK7 , вс .
- ^ «Сертифицированные системные конфигурации Oracle JDK 8 и JRE 8» . Корпорация Oracle . Проверено 18 мая 2017 .
- ^ Гэри, Бенсон (2007-11-06). «Руководство Гэри по портированию IcedTea» . Архивировано из оригинала на 2012-07-12 . Проверено 26 января 2008 .
- ^ Гэри, Бенсон (2008-02-01). «1 февраля 2008 года» . Архивировано из оригинала на 2012-07-10 . Проверено 3 февраля 2008 .
- ↑ Эндрю, Хейли (31 января 2008 г.). «Сделать нулевой ассемблер по умолчанию на ppc» . Проверено 3 февраля 2008 .
- ↑ Лилиан, Ангел (13 февраля 2008). «Выпущен IcedTea 1.6 с нулевым ассемблером и поддержкой JNLP!» . Красная шляпа . Проверено 13 февраля 2008 .
Внешние ссылки [ править ]
- Официальный веб-сайт
- Список HotSpot VMOptions
- Спецификация виртуальной машины Java
- История оригинальной команды Strongtalk-HotSpot
- «Sun объявляет о выпуске Java Hotspot Performance Engine» . Архивировано 18 декабря 2006 года . Проверено 27 марта 2014 года .CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
- Репозиторий разработки исходного кода HotSpot Mercurial (система контроля версий) для JDK8