HotSpot
HotSpot je jednou z implementací Java Virtual Machine (JVM) pro desktopové počítače a servery. Původně byl označen jako Java HotSpot Performance Engine a v současnosti je vyvíjen a udržován firmou Oracle. HotSpot je především velmi efektivní běhové prostředí pro programovací jazyky kompilovatelné do bajtkódu. HotSpot byl zpočátku vyvíjen jako alternativa ke standardní Java Virtual Machine, obsahující Just-in-time (JIT) kompilátor, který nebyl dostatečně efektivní.

Jméno HotSpot vzniklo z anglického "hot" (horký) a "spot" (místo), což je princip, na kterém HotSpot funguje - vyhledávání horkých a často spouštěných metod v programu.

Historie 
Java HotSpot Performance Engine byl poprvé zveřejněn 27. dubna 1999.

Nejprve byl HotSpot dostupný pouze jako plugin ve verzi 1.2, standardní implementací Sun JVM se stává od verze 1.3.

Princip 
HotSpot jako svoji součást obsahuje známý Just-in-time (JIT) kompilátor. Před prvním spuštěním je program (zkompilovaný v bajtkódu) přeložen rychlým Just-in-time (JIT) kompilátorem a spuštěn. Z většiny výzkumů vyplývá, že 80% strojového času zabírá pouze 20% kódu, proto by se hodilo tento kód co nejvíce optimalizovat .

Z analýzy běhu programu JVM zjišťuje tzv. horká místa (anglicky hot spots), tedy metody, které jsou spouštěné opakovaně a velmi často. Tyto metody kompiluje tedy znovu s vyšší mírou optimalizace. Kód, který je spouštěn pouze jednou (například inicializační bloky tříd nebo některé konstruktory) by sice mohl běžet rychleji, ale to by znamenalo vyšší míru optimalizace a tedy pomalejší a důkladnější běh Just-in-time (JIT) kompilátoru a ve výsledku by takový program běžel pomaleji.

Díky tomu, že Java Virtual Machine (JVM) beží vždy na konkrétním procesoru, může JVM využívat konkrétní instrukce, a není výjimkou, že dosahuje kratšího strojového času než tradiční jazyky C nebo C++.

Vlastnosti 
Na zdrojovém kódu HotSpot JVM doposud pracovaly desítky lidí více než 15 let. (To je zároveň dobře a zároveň špatně.) HotSpot je již velkou věcí. Zdrojové kódy obsahují více než 1500 C/C++ hlavičkových a zdrojových souborů, dohromady obsahujících téměř 250.000 řádků kódu. Stejně jako jiné implementace JVM, HotSpot obsahuje:
 Java Classloader
 Interpret bajtkódu
 Dvě běhové implementace server a client a k nim přidružené JIT kompilátory
 Několik garbage collectorů
 Mnoho podpůrných běhových knihoven, např. pro synchronizaci

Server a client 
Běhové prostředí JRE nabízí dvě implementace. Jedna se nazývá client, ta druhá server určené pro desktopové počítače v případě prvním, ve druhém případě pro servery. Zatímco client vyžaduje především rychlé spouštění programů, rychlou odpověď po nějaké vstupně/výstupní operaci, server tak rychlý být nemusí. Client více využívá možností přímé interpretace. Server načítá velmi pomalu, ale s vysokou mírou optimalizace, protože předpokládá, že kód bude spouštěn velmi často a tedy by měl běžet velmi rychle.

Dalším rozdílem jsou přidělovaná časová kvanta běhu jednotlivých programů, která se liší přibližně desetinásobně (tedy pokud kód na JVM client běží 150ms, na JVM server může běžet až 1500ms, než je přepnut). Client chce obvykle rychlou odezvu, mnohdy i více programů. Server na druhou stranu musí obsluhovat mnoho požadavků, a tedy nemůže neustále přepínat mezi programy.

JVM přepínače (flags) 
Podobně jako jiné implementace JVM obsahuje mnoho tisíc různých přepínačů a možností. Nejdůležitější pro HotSpot jsou pravděpodobně -server a -client, pro nastavení chování HotSpot na různých konfiguracích hardware.

Podporované platformy

Udržované firmou Oracle 
Podobně jako pro JDK od Oraclu je implementace HotSpotu vyvíjena a udržována pro Microsoft Windows, Linux, Solaris a Mac OS X. Podporované instrukční sady jsou x86-64, ARMv6, ARMv7 a SPARC (pouze Solaris).

Ostatní 
Portování na jiné platformy je samozřejmě díky GPLv2 licenci možné, ale velmi složité. Zdrojový kód je psán v C/C++ a obsahuje velmi vysoké procento jazyka assembleru. Projekt IcedTea se snaží o obecnější variantu HotSpot interpretru nazvanou zero-asembler HotSpot s téměř nulovou dávkou assembleru. Projekt IcedTea je především určen pro širokou škálu Linuxových distribucí.

Licence 
Od 13. listopadu 2006 je HotSpot JVM licencován pod GPL verze 2

Související články 
 Java Virtual Machine
 Just-in-time kompilace
 Java (programovací jazyk)

Odkazy

Reference 

Java
Virtuální stroje
Svobodný software naprogramovaný v C++
Software v Jazyce symbolických adres