Разница между JVM и HotSpot?

147

Что такое HotSpot и как он связан с JVM и OpenJDK? Это библиотека? Что именно это делает?

Кроме того, в чем разница между OpenJDK и HotSpot?

Джастин
источник

Ответы:

148

Определение того, что именно является виртуальной машиной Java, указано в спецификации виртуальной машины Java.

JVM по определению является виртуальной машиной , то есть программной машиной, которая имитирует действия реальной машины. Как реальная машина, она имеет набор команд , архитектуру виртуального компьютера и модель исполнения. Он способен выполнять код, написанный с помощью этого набора виртуальных команд, почти так же, как реальная машина может выполнять машинный код.

HotSpot - это реализация концепции JVM. Первоначально он был разработан Sun и теперь принадлежит Oracle. Существуют и другие реализации спецификации JVM, такие как JRockit , IBM J9 и многие другие.

См. Список реализаций виртуальной машины Java.

OpenJDK проект , согласно которому разрабатывается реализация с открытым исходным кодом от HotSpot (и многих других кусков JDK , например , компилятор, API - интерфейсы, инструменты и т.д.).

Эдвин Далорсо
источник
25

OpenJDK (Open Java Development Kit) - это бесплатная реализация с открытым исходным кодом Java Platform, Standard Edition (Java SE). Openjdk - это проект, начатый Sun Microsystems, в настоящее время многие компании и сообщество заботятся о создании Java Development Kit абсолютно в открытом коде. Согласно официальной документации .

OpenJDK - это реализация стандартов Java Platform, Standard Edition (Java SE) с открытым исходным кодом. В мае 2007 года Sun выпустила полностью готовую версию Java Development Kit (JDK) для Java SE для сообщества OpenJDK в качестве бесплатного программного обеспечения под общедоступной лицензией GNU версии 2 (GPLv2). Sun объявила о создании временного совета управляющих сообщества OpenJDK. Sun также объявила, что реализации на основе OpenJDK могут использовать комплект технической совместимости Java SE 6 (JCK) для установления совместимости со спецификацией Java SE 6.

Проект OpenJDK состоит из нескольких компонентов - HotSpot (виртуальная машина) , библиотека классов Java и компилятор Java javac. Для получения дополнительной информации посетите его сайт .

Текущая JVM, предоставляемая Sun / Oracle, называется HotSpot, потому что она ищет горячие точки использования в коде (места, где код используется более интенсивно) для оптимизации «точно в срок». Из википедии , HotSpot, выпущенный как «Java HotSpot Performance Engine» представляет собой виртуальную машину Java для настольных компьютеров и серверов, поддерживаемых и распределенных корпорацией Oracle.

простофиля
источник
Я слышал, что OpenJDK также использует HotSpot для выполнения кода? Это правда?
Джастин
@TheNewIdiot, значит, вы говорите, что HotSpot является частью OpenJDK? Или есть также проприетарный HotSpot, как предполагает ответ выше?
Pacerier
@NINC, То есть Hotspot является частью OracleJDK и OpenJDK? Горячая точка = JRockit = OracleJDK = OpenJDK?
Пейсер
12

Примечание: AdoptOpenJDK изменил свое название на Adoptium после перехода в Eclipse Foundation в конце 2020-06 гг.


Разница между JVM и HotSpot?

Java Virtual Machine (JVM) является мнимым компьютер , который никогда не был физически построен в качестве аппаратных средств. JVM запускает программы, скомпилированные с ее воображаемым набором команд, записанным в хранилище в качестве промежуточного представления, известного как байт-код .

Во время выполнения байт-код должен быть преобразован из набора воображаемых команд в фактический набор команд ЦП хост-машины. Это может быть сделано на лету переводчиком. Или байт-код может быть полностью скомпилирован и кэширован, чтобы выполняться быстрее, чем через интерпретатор, в процессе, известном как JIT-компиляция .

За десятилетия было много реализаций JVM . Большинство отпало.

HotSpot - это одна из реализаций технологии JIT, которая начинается с интерпретации и отслеживает фактическую производительность приложения. Затем части приложения выбираются для полной компиляции в виде нативного кода и кэширования для более быстрого выполнения. HotSpot был разработан в Sun как коммерческий продукт. После приобретения Sun Oracle продолжил развитие HotSpot, объединив важные части своего конкурирующего продукта JRockit . HotSpot теперь с открытым исходным кодом черезпроект OpenJDK , доступный бесплатно.

Еще одна такая реализация в OpenJ9 , разработанная IBM, и теперь с открытым исходным кодом через Eclipse Foundation и доступна бесплатно. Некоторые дистрибутивы JVM, построенные на OpenJDK, заменяют HotSpot на OpenJ9, в то же время все еще используя остальную часть OpenJDK, например библиотеки классов Java SE . Например, готовые дистрибутивы, доступные в AdoptOpenJDK, предоставляют выбор HotSpot или OpenJ9 на некотором оборудовании.

Диаграмма, показывающая историю слияния HotSpot и JRockit и OpenJ9, доступных в AdoptOpenJDK.

Диаграмма, показывающая историю слияния HotSpot и JRockit и OpenJ9, доступных в AdoptOpenJDK

Что такое HotSpot и как он связан с JVM и OpenJDK? Это библиотека? Что именно это делает?

  • HotSpot является реализацией части JVM, которая интерпретирует и / или компилирует Java-байт-код для выполнения на центральном процессоре хоста.
  • OpenJ9 является альтернативой.

OpenJ9 обычно известен намного более быстрым запуском и намного более низким использованием памяти на начальном этапе, в то время как HotSpot может работать более эффективно в целом для долго работающих приложений. И то, и другое хорошо известно, доступно и доступно в дистрибутивах OpenJDK.

OpenJDK - это проект с открытым исходным кодом, который полностью реализует спецификации Java , JSR и JEP, которые определяют платформу Java . Каждая реализация JVM, о которой я знаю сегодня, полностью или в основном основана на кодовой базе OpenJDKи использует технологию HotSpot или OpenJ9.

Помимо JVM, OpenJDK также обеспечивает реализацию в исходном коде для всех классов, требуемых спецификациями Java SE, таких как java.lang , java.util , java.time и другие пакеты.

Кроме того, в чем разница между OpenJDK и HotSpot?

Исходный код для HotSpot размещается, поддерживается и дорабатывается в рамках проекта OpenJDK . Альтернатива, OpenJ9 , размещается, поддерживается и дорабатывается в Eclipse Foundation , заменяя HotSpot в некоторых дистрибутивах OpenJDK.

Некоторые дистрибутивы технологии Java предпочитают поставлять с HotSpot. Некоторые распределения выбирают заменить часть OpenJDK кодового , который HotSpot с альтернативой, OpenJ9 .

Вот графическая схема, которая поможет вам выбрать поставщика для распространения платформы Java.

Блок-схема, помогающая вам выбрать поставщика для реализации Java 11

Мотивации при выборе поставщика для Java

Базилик Бурк
источник
8

HotSpot, как упоминалось выше, является кроссплатформенной реализацией Концепции виртуальной машины Java (JVM) и распространяется вместе с OpenJDK (Java Developer Kit) в соответствии с GNU General Public License. HotSpot написан в основном на C ++ и изначально разрабатывался под управлением Sun Microsystems. В настоящее время он разрабатывается в рамках проекта OpenJDK по адресу www.java.net. HotSpot JVM была доступна в качестве дополнения для Java 1.2, а затем использовалась как Sun JVM по умолчанию в Java 1.3. В настоящее время JVM находится в версии 7, сборка b147, и за ней стоит активное сообщество разработчиков.

Для получения дополнительной информации перейдите: https://www.java.net/

Удачного кодирования!


источник
7

JVM - это абстрактная машина (спецификации). HotSpot, OpenJDK и JRockit и так далее являются реализациями JVM.

Бесплатные и открытые реализации

  • HotSpot , основная эталонная реализация Java VM

  • OpenJDK - Open Java Development Kit - это бесплатная реализация с открытым исходным кодом, распространяемая по лицензии GNU General Public License (GNU GPL), за исключением ссылок.

Собственные реализации

  • JRockit (первоначально из Appeal Virtual Machines), приобретенный Oracle для Linux, Windows и Solaris

для большего количества реализаций
ссылка объясняет различия между HotSpot и JRocket

Premraj
источник
-25

HotSpot - это продвинутая форма взлома C ++, чтобы использовать его, вы должны использовать его для компиляции даже самых простых вещей. Если только вы не настраиваете компиляторы и не пишете их с нуля. HotSpot - это, по сути, способ преобразования исходного кода в код C ++, а затем компиляции его в нативный код, поэтому скомпилирован термин jit.

Dawg
источник