Різниця між JVM та HotSpot?


147

Що саме є HotSpot і як це стосується JVM та OpenJDK? Це бібліотека? Що саме це робить?

Крім того, яка різниця між OpenJDK та HotSpot?

Відповіді:


148

Визначення того, що саме є віртуальною машиною Java, зазначено у програмі специфікації Java Virtual Machine

JVM - це віртуальна машина , тобто програмне забезпечення, яке імітує те, що робить реальна машина. Як і справжня машина, вона має набір інструкцій , архітектуру віртуального комп’ютера та модель виконання. Він здатний виконувати код, написаний за допомогою цього віртуального набору інструкцій, майже так, як реальна машина може запускати машинний код.

HotSpot - це реалізація концепції JVM. Спочатку вона була розроблена компанією Sun, а тепер належить Oracle. Є й інші реалізації специфікації JVM, такі як JRockit , IBM J9 , серед багатьох інших.

Див. Перелік реалізацій віртуальної машини Java

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


25

OpenJDK (Open Java Development Kit) - це безкоштовна та відкрита реалізація платформи Java, стандартне видання (Java SE). Openjdk - це проект, розпочатий компанією Sun Microsystems, в даний час опікується багатьма компаніями та громадою для створення Java Development Kit абсолютно у відкритому коді. Відповідно до офіційної документації .

OpenJDK - це реалізація специфікацій платформи Java, стандартної версії (Java SE) з відкритим кодом. У травні 2007 року Sun випустила повністю розроблену версію Java Development Kit (JDK) для Java SE для спільноти OpenJDK як безкоштовне програмне забезпечення за версією GNU General Public License 2 (GPLv2). Sun оголосив Тимчасовий правління для спільноти OpenJDK. Sun також оголосив, що на основі OpenJDK реалізацій можна використовувати комплект технічної сумісності Java SE 6 (JCK) для встановлення сумісності зі специфікацією Java SE 6.

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

Поточний 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?
Pacerier

12

Примітка: AdoptOpenJDK змінив назву на Adoptium після переходу до фонду Eclipse наприкінці 2020-06.


Різниця між JVM та HotSpot?

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

Під час виконання байт-код повинен бути переведений з уявного набору інструкцій у фактичний набір інструкцій ЦП хост-машини. Це можна зробити на ходу перекладачем. Або байт-код може бути повністю складений і кешований, працювати швидше, ніж через інтерпретатор, в процесі, відомому як компіляція Just-In-Time (JIT) .

Протягом десятиліть було здійснено багато реалізацій СВМ . Більшість відпала.

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 для виконання у хості CPU.
  • OpenJ9 - альтернатива.

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

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

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

Крім того, яка різниця між OpenJDK та HotSpot?

Вихідний код HotSpot розміщується, підтримується та надалі розвивається як частина проекту OpenJDK . Альтернатива, OpenJ9 , розміщується, підтримується та надалі розвивається у Фонді Eclipse , одночасно замінюючи HotSpot в деяких дистрибутивах OpenJDK.

Деякі дистрибутиви технології Java обирають до HotSpot. Деякі дистрибутиви вирішують замінити частину кодової бази OpenJDK, яка є HotSpot, альтернативою OpenJ9 .

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

Блок-схема, яка керує вами у виборі постачальника для реалізації Java 11

Мотивації у виборі постачальника для Java


8

Як було сказано вище, HotSpot - це кросплатформна реалізація концепції віртуальної машини Java (JVM), яка розповсюджується разом із OpenJDK (Java Developer Kit) відповідно до Загальної публічної ліцензії GNU. HotSpot написаний в основному на C ++ і спочатку був розроблений під Sun Microsystems. Зараз він розробляється в рамках проекту OpenJDK за адресою www.java.net. HotSpot JVM був доступний як доповнення для Java 1.2, а пізніше використовувався як Sun JVM за замовчуванням у Java 1.3. Наразі JVM знаходиться у версії 7, Build b147 та має активну спільноту розвитку.

Для отримання додаткової інформації відвідайте: https://www.java.net/

Щасливе кодування!


7

JVM - це абстрактна машина (технічні характеристики). HotSpot, OpenJDK і JRockit і так є реалізацією JVM.

Безкоштовні та відкриті реалізації

  • HotSpot , основна посилання на реалізацію Java VM

  • OpenJDK - Open Java Development Kit - це безкоштовна та відкрита реалізація, ліцензована згідно з загальною ліцензією GNU GNU (GNU GPL) за винятком посилання.

Власні реалізації

  • JRockit (спочатку з апеляційних віртуальних машин), придбаний Oracle для Linux, Windows та Solaris

для більшої реалізації
посилання пояснює відмінності між HotSpot та JRocket


-25

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.