HotSpot (виртуальная машина)
этой статьи Начальный раздел может быть слишком коротким, чтобы адекватно суммировать ключевые моменты . ( октябрь 2018 г. ) |
Оригинальный автор(ы) | Сан Микросистемс |
---|---|
Разработчик(и) | Корпорация Oracle |
Первоначальный выпуск | 27 апреля 1999 г [1] |
Стабильная версия | 23.25-б01 / 1 января 2016 г |
Репозиторий | github |
Написано в | С++ , ассемблер |
Операционная система | Кросс-платформенный |
Тип | виртуальная машина Java |
Лицензия | Собственная (ранние версии), Стандартная общественная лицензия GNU (текущая) |
Веб-сайт | openjdk |
HotSpot , выпущенный как Java HotSpot Performance Engine , [1] — это виртуальная машина Java для настольных и серверных компьютеров, разработанная компанией Sun Microsystems , которая была приобретена и стала подразделением корпорации Oracle в 2010 году. Ее функции позволили повысить производительность с помощью таких методов, как своевременная компиляция и адаптивная оптимизация . Это де-факто виртуальная машина Java, служащая эталонной реализацией языка программирования Java .
История [ править ]
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 (внутреннее имя C2), который изначально был разработан Clifford Click [4] и был продолжением его докторской диссертации по оптимизации компиляторов. [5] Название компилятора HotSpot происходит от поведения программного обеспечения: при запуске байт-кода Java , как и в случае с собственной виртуальной машиной, HotSpot постоянно анализирует производительность программы на наличие горячих точек , которые выполняются часто или неоднократно. Затем они направляются на оптимизацию , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла код C++ или C в некоторых тестах. [6]
Первоначально доступен как надстройка для Java 1.2. [7] HotSpot стал JVM Sun по умолчанию в Java 1.3. [8]
Особенности [ править ]
JRE (первоначально от Sun, теперь от Oracle) включает две виртуальные машины: одна называется Client , а другая — Server . Версия Клиента настроена на быструю загрузку. Он использует интерпретацию. Версия Server загружается медленнее, что требует больше усилий для создания высокооптимизированных JIT-компиляций для повышения производительности. Обе виртуальные машины компилируют только часто используемые методы, используя настраиваемое пороговое значение количества вызовов, чтобы решить, какие методы компилировать.
Многоуровневая компиляция, опция, представленная в Java 7, использует как клиентский, так и серверный компиляторы в тандеме, чтобы обеспечить более быстрое время запуска, чем серверный компилятор, но аналогичную или лучшую пиковую производительность. [9] Начиная с Java 8, многоуровневая компиляция используется по умолчанию для виртуальной машины сервера. [10]
HotSpot написан на C++ и ассемблере. По оценкам Sun, в 2007 году он содержал около 250 000 строк исходного кода. [11] Точка доступа обеспечивает:
- Загрузчик классов Java
- Шаблонный байт-кода Java интерпретатор
- Клиентский (C1) и серверный (C2) JIT-компиляторы, оптимизированные для их соответствующего использования.
- Несколько сборщиков мусора (включая ZGC с очень малым временем паузы и Shenandoah без пауз) [12] [13]
- Набор вспомогательных библиотек времени выполнения
Флаги JVM [ править ]
HotSpot поддерживает множество аргументов командной строки для параметров выполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены на любой соответствующей виртуальной машине Java ; другие специфичны для HotSpot и не могут быть найдены в других JVM (параметры, начинающиеся с -X или -XX, являются нестандартными). [14] [15] [16] [17]
Лицензия [ править ]
13 ноября 2006 года HotSpot JVM и Java Development Kit (JDK) были лицензированы по лицензии GNU General Public License (GPL) версии 2. [18] Это код, который стал частью Java 7 . [19]
Поддерживаемые платформы [ править ]
Поддерживается Oracle
Как и весь пакет Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle Corporation в Windows , Linux и macOS . Поддерживаемые набора команд архитектуры (ISA): x86-64 и AArch64 . [20] Начиная с JDK 15, Solaris и SPARC больше не поддерживаются. [21]
Порты третьих лиц [ править ]
Порты также доступны третьими лицами для различных других Unix операционных систем . Поддерживается несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только Solaris).
Портирование HotSpot затруднено, так как большая его часть почти полностью написана на ассемблере . [22] хотя некоторые его разделы также написаны на чисто совместимом со стандартами ISO C++ . Чтобы исправить это, проект IcedTea разработал общий порт интерпретатора HotSpot под названием Hotspot с нулевым ассемблером (или Zero ), практически без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента-интерпретатора HotSpot к любой процессорной архитектуре Linux . Код Hotspot с нулевым ассемблером используется для всех отличной от x86 портов HotSpot с архитектурой, ( PowerPC , Itanium ( IA-64 ), S390 и ARM ), начиная с версии 1.6. [23] [24] [25]
См. также [ править ]
- Список виртуальных машин Java
- Сравнение виртуальных машин Java
- Производительность Java
- OpenJDK
- Da Vinci Machine — проект по созданию прототипа расширения JVM для добавления поддержки динамических языков программирования.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б с «Sun объявляет о доступности Java HotSpot Performance Engine» . Пресс-релиз . Сан Микросистемс. Архивировано из оригинала 1 ноября 2013 года . Проверено 26 марта 2013 г.
- ^ Услуги, сотрудники хроники и новости (19 февраля 1997 г.). «SUN MICRO ПОКУПАЕТ LONGVIEW» . СФГЕЙТ . Проверено 5 ноября 2020 г.
- ^ «Клифф Клик о языках Azul GC, Zing и JVM без пауз» . ИнфоВ. 20 января 2011 г. Проверено 10 мая 2016 г.
[...] Anamorphic была приобретена Sun, поэтому первоначальная команда работала в компании Anamorphic, они пришли с технологией, ориентированной на Smalltalk, переориентировали ее на Java и вскоре после этого наняли меня для создания новой JIT для своей виртуальной машины.
- ^ Клик, Клиффорд (апрель 2001 г.). «Компилятор сервера Java HotspotTM» . JVM'01: Материалы симпозиума 2001 года по симпозиуму по исследованиям и технологиям виртуальных машин JavaTM . 1 : 1.
- ^ «Клифф Клик — Море узлов и JIT HotSpot» .
- ^ Льюис, JP (2004). «Производительность Java по сравнению с C++» . Архивировано из оригинала 24 апреля 2020 г. Проверено 3 октября 2007 г.
- ^ Шенкленд, Стивен (18 февраля 1999 г.). «HotSpot наконец-то оставил свой след» . Cnet .
- ^ «Sun Microsystems выпускает самую быструю на сегодняшний день клиентскую платформу Java» . Сан Микросистемс. 08 мая 2000 г. Проверено 3 октября 2007 г.
- ^ «Повышение производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
- ^ «Повышение производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
- ^ «Группа ХотСпот» . Сан Микросистемс. 2007 . Проверено 3 октября 2007 г.
Существует около 1500 заголовочных и исходных файлов C/C++, содержащих почти 250 000 строк кода.
- ^ «Главное – ЗГК» . OpenJDK Wiki .
- ^ «Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)» . Справочный центр Oracle .
- ^ «Параметры виртуальной машины Java HotSpot» . Сан Микросистемс . Проверено 8 февраля 2009 г.
- ^ Мокер, Джозеф Д. (28 августа 2007 г.). «Коллекция опций JVM» . Архивировано из оригинала 30 апреля 2011 г. Проверено 8 февраля 2009 г.
- ^ Максимович, Дмитрий. «Наиболее полный список опций -XX для Java 6 JVM» . Архивировано из оригинала 30 января 2010 г. Проверено 8 февраля 2009 г.
- ^ Наттер, Чарльз (29 января 2009 г.). «Мои любимые JVM-флаги горячей точки» . Проверено 8 февраля 2009 г.
- ^ «Sun открывает исходные коды технологии Java и выпускает исходный код по лицензии GPL второй версии через сообщества NetBeans и Java.net» . Сан Микросистемс. 13 ноября 2006 г. Архивировано из оригинала 9 февраля 2009 г. Проверено 6 мая 2017 г.
- ^ JDK7. Архивировано 15 декабря 2016 г. в Wayback Machine , вс.
- ^ «Сертифицированные системные конфигурации Oracle JDK 17» . Корпорация Оракл . Проверено 1 февраля 2021 г.
- ^ «JEP 381: Удалите порты Solaris и SPARC» . openjdk.java.net .
- ^ Бенсон, Гэри (6 ноября 2007 г.). «Руководство Гэри по портированию IcedTea» . Архивировано из оригинала 12 июля 2012 г. Проверено 26 января 2008 г.
- ^ Бенсон, Гэри (1 февраля 2008 г.). «1 февраля 2008 года» . Архивировано из оригинала 10 июля 2012 г. Проверено 3 февраля 2008 г.
- ^ Хейли, Эндрю (31 января 2008 г.). «Сделать нулевой ассемблер по умолчанию для ppc» . Проверено 1 февраля 2022 г.
- ^ Ангел, Лилиан (13 февраля 2008 г.). «IcedTea 1.6 выпущена с поддержкой Zero-assembler и JNLP!» . Красная шляпа . Проверено 13 февраля 2008 г.
Внешние ссылки [ править ]
- Официальный сайт
- Список опций HotSpot VMOptions
- Спецификация виртуальной машины Java
- История первоначальной команды Strongtalk-HotSpot
- «Sun объявляет о доступности Java Hotspot Performance Engine» . Архивировано из оригинала 18 декабря 2006 года . Проверено 27 марта 2014 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - Репозиторий разработки исходного кода HotSpot Mercurial (система контроля версий) для JDK8