Czym dokładnie jest HotSpot i jaki ma związek z JVM i OpenJDK? Czy to biblioteka? Co to właściwie robi?
Jaka jest różnica między OpenJDK a HotSpot?
źródło
Czym dokładnie jest HotSpot i jaki ma związek z JVM i OpenJDK? Czy to biblioteka? Co to właściwie robi?
Jaka jest różnica między OpenJDK a HotSpot?
Definicja tego, czym dokładnie jest wirtualna maszyna języka Java, jest podana w specyfikacji wirtualnej maszyny języka Java
JVM jest z definicji maszyną wirtualną , tj. Maszyną programową, która symuluje działanie prawdziwej maszyny. Podobnie jak prawdziwa maszyna ma zestaw instrukcji , architekturę komputera wirtualnego i model wykonania. Jest w stanie uruchomić kod napisany za pomocą tego wirtualnego zestawu instrukcji, podobnie jak prawdziwa maszyna może uruchomić kod maszynowy.
HotSpot to implementacja koncepcji JVM. Został pierwotnie opracowany przez firmę Sun, a obecnie jest własnością firmy Oracle. Istnieją inne implementacje specyfikacji JVM, takie jak JRockit , IBM J9 i wiele innych.
Zobacz listę implementacji wirtualnych maszyn języka Java
OpenJDK to projekt, w ramach którego implementacja opensource HotSpot'a (i wiele innych kawałków JDK np kompilator, API, narzędzia, etc) jest rozwijany.
OpenJDK (Open Java Development Kit) to bezpłatna i otwarta implementacja platformy Java, Standard Edition (Java SE) .Openjdk to projekt rozpoczęty przez Sun Microsystems, obecnie pod opieką wielu firm i społeczności w celu zbudowania Java Development Kit absolutnie w open source. Zgodnie z oficjalną dokumentacją .
OpenJDK to implementacja Open Source specyfikacji Java Platform, Standard Edition (Java SE). W maju 2007 r. Firma Sun wydała w pełni kompilowalną wersję Java Development Kit (JDK) dla Java SE dla społeczności OpenJDK jako wolne oprogramowanie na licencji GNU General Public License w wersji drugiej (GPLv2). Firma Sun ogłosiła powołanie Tymczasowej Rady Zarządzającej dla społeczności OpenJDK. Firma Sun ogłosiła również, że implementacje oparte na OpenJDK mogą wykorzystywać zestaw Java SE 6 Technical Compatibility Kit (JCK) w celu ustalenia zgodności ze specyfikacją Java SE 6.
Projekt OpenJDK składa się z wielu komponentów - HotSpot (maszyny wirtualnej) , biblioteki klas Java i kompilatora javac Java, więcej na ten temat można znaleźć na jego stronie .
Obecna maszyna JVM dostarczana przez Sun / Oracle nosi nazwę HotSpot, ponieważ szuka w kodzie miejsc, w których kod jest używany intensywniej (miejsca, w których kod jest intensywniej używany) w celu optymalizacji „just in time”. Z Wikipedii , HotSpot, wydany jako „Java HotSpot Performance Engine” to wirtualna maszyna Java dla komputerów stacjonarnych i serwerów, utrzymywana i dystrybuowana przez Oracle Corporation.
Uwaga: AdoptOpenJDK zmienił nazwę na Adoptium po przeniesieniu się do Eclipse Foundation pod koniec 2020-06.
Java Virtual Machine (JVM) jest wyimaginowany komputer, który nigdy nie został zbudowany fizycznie jako sprzęt. Maszyna JVM uruchamia programy skompilowane do jej wyimaginowanego zestawu instrukcji zapisanych w pamięci jako reprezentacja pośrednia znana jako kod bajtowy .
W czasie wykonywania kod bajtowy musi zostać przetłumaczony z wyimaginowanego zestawu instrukcji na rzeczywisty zestaw instrukcji procesora maszyny hosta. Może to zrobić na bieżąco tłumacz. Albo kod bajtowy może być w pełni skompilowany i zbuforowany, aby działał szybciej niż przez interpreter, w procesie znanym jako kompilacja Just-In-Time (JIT) .
Przez dziesięciolecia było wiele wdrożeń JVM . Większość odpadła.
HotSpot to implementacja technologii JIT, która rozpoczyna się od uruchomienia zinterpretowanego i obserwuje rzeczywistą wydajność aplikacji. Części aplikacji są następnie wybierane do pełnej kompilacji jako kodu natywnego i buforowania, co zapewnia znacznie szybsze wykonanie. HotSpot został opracowany w firmie Sun jako produkt komercyjny. Po przejęciu firmy Sun, Oracle dalej rozwijał HotSpot, łącząc ważne części konkurencyjnego produktu, JRockit . HotSpot jest teraz udostępniany na zasadach open source w ramachprojektu OpenJDK , dostępny bezpłatnie.
Kolejna taka implementacja w OpenJ9 , opracowana przez IBM, a teraz dostępna na zasadach open source za pośrednictwem Eclipse Foundation i dostępna bezpłatnie. Niektóre dystrybucje JVM zbudowane na OpenJDK zastępują HotSpot OpenJ9, podczas gdy reszta OpenJDK jest nadal używana, na przykład biblioteki klas Java SE . Na przykład gotowe dystrybucje dostępne w AdoptOpenJDK zapewniają wybór HotSpot lub OpenJ9 na niektórych urządzeniach.
Diagram przedstawiający historię łączenia HotSpot i JRockit oraz OpenJ9 dostępne w AdoptOpenJDK.
OpenJ9 jest ogólnie znany ze znacznie szybszego uruchamiania i znacznie mniejszego zużycia pamięci na początku, podczas gdy HotSpot może ogólnie działać wydajniej w przypadku długotrwałych aplikacji. Oba są dobrze oceniane, dobrze zużyte i dostępne w dystrybucjach OpenJDK.
OpenJDK to projekt typu open source, który w pełni implementuje specyfikacje Java , JSR i JEP, które definiują platformę Java . Każda implementacja JVM, którą znam dzisiaj, jest oparta całkowicie lub w większości na bazie kodu OpenJDKi wykorzystuje technologię HotSpot lub OpenJ9.
Oprócz JVM, OpenJDK zapewnia również implementację w kodzie źródłowym dla wszystkich klas wymaganych przez specyfikacje Java SE, takich jak java.lang , java.util , java.time i inne pakiety.
Kod źródłowy HotSpot jest przechowywany, utrzymywany i dalej rozwijany w ramach projektu OpenJDK . Alternatywa, OpenJ9 , jest przechowywana, utrzymywana i dalej rozwijana w Eclipse Foundation , zastępując HotSpot w niektórych dystrybucjach OpenJDK.
Niektóre dystrybucje technologii Java są dostarczane z HotSpot. Niektóre dystrybucje zastępują część bazy kodu OpenJDK, którą jest HotSpot, alternatywą, OpenJ9 .
Oto schemat blokowy ułatwiający wybór dostawcy dystrybucji platformy Java.
źródło
HotSpot jest, jak wspomniano powyżej, wieloplatformową implementacją koncepcji wirtualnej maszyny języka Java (JVM) i jest rozprowadzany wraz z pakietem OpenJDK (Java Developer Kit) na podstawie Powszechnej Licencji Publicznej GNU. HotSpot jest napisany głównie w C ++ i został pierwotnie opracowany pod Sun Microsystems. Obecnie jest rozwijany w ramach projektu OpenJDK pod adresem www.java.net. HotSpot JVM była dostępna jako dodatek do języka Java 1.2, a później była używana jako domyślna maszyna JVM firmy Sun w języku Java 1.3. Maszyna JVM jest obecnie w wersji 7, kompilacja b147 i ma za sobą aktywną społeczność programistów.
Aby uzyskać więcej informacji, przejdź do: https://www.java.net/
Miłego kodowania!
źródło
Bezpłatne i otwarte implementacje
HotSpot , główna referencyjna implementacja maszyny wirtualnej Java
OpenJDK - Open Java Development Kit jest bezpłatną i otwartą implementacją na licencji GNU General Public License (GNU GPL) z wyjątkiem dotyczącym łączenia.
Autorskie wdrożenia
więcej implementacji
link wyjaśnia różnice między HotSpot i JRocket
źródło
HotSpot to zaawansowana forma hakowania w C ++, aby z niej skorzystać, musisz zbudować przeciwko niej, aby skompilować nawet najprostsze rzeczy. Chyba że stroisz kompilatory i / lub napiszesz je od zera. HotSpot to w zasadzie sposób na konwersję kodu źródłowego do kodu C ++, a następnie kompilację go do kodu natywnego, w ten sposób skompilowano termin jit.
źródło