Obsah
JIT kompilátor (Just-In-Time Compiler)
JIT kompilátor (z anglického Just-In-Time – *„tak akorát včas“*) je součást běhového prostředí (runtime) programovacího jazyka, která provádí překlad zdrojového kódu (nebo mezikódu) do strojového kódu procesoru až během samotného běhu programu (runtime), a nikoliv předem před spuštěním.
Jak JIT kompilátor funguje?
Tradiční programovací jazyky se dělí na kompilované (přeložené do strojového kódu předem, např. C++) a interpretované (překládané a vykonávané řádek po řádku za běhu, např. starší verze Pythonu). JIT kombinuje výhody obou přístupů:
| Fáze zpracování | Popis |
|---|---|
| 1. Prvotní překlad (Bytecode) | Zdrojový kód se nejprve přeloží do univerzálního mezikódu (tzv. bytekódu), což zajišťuje přenositelnost napříč platformami. |
| 2. Běh a sledování (Profiling) | Program se spustí v interpretru. JIT přitom sleduje, které části kódu se spouštějí nejčastěji (tzv. *hotspots*). |
| 3. JIT kompilace za běhu | Často používané části kódu (funkce, smyčky) JIT za chodu zkompiluje přímo do nativního strojového kódu pro daný procesor. |
| 4. Spuštění optimalizovaného kódu | Další průchody tímto kódem už běží přímo na hardwaru s maximální rychlostí. |
Klíčové výhody JIT kompilace
* Vysoký výkon: Kombinuje flexibilitu interpretovaných jazyků s rychlostí nativního strojového kódu. * Běhové optimalizace (Adaptive Optimization): JIT dokáže optimalizovat kód na základě reálných dat za běhu programu (např. podle toho, jaké datové typy se v aplikaci skutečně používají). * Přenositelnost (Platform Independence): Jeden zkompilovaný bytekód (např. Java Bytecode) může běžet na Windows, Linuxu i macOS, protože JIT si jej na každém zařízení přeloží pro konkrétní procesor.
Kde se JIT kompilátory využívají?
JIT je dnes standardní součástí celé řady moderních běhových prostředí:
| Technologie / Jazyk | Popis / Název JIT motoru |
|---|---|
| Java (JVM) | Java Virtual Machine využívá JIT kompilaci k masivnímu zrychlení běhu aplikací. |
| JavaScript (V8, SpiderMonkey) | Moderní webové prohlížeče (Chrome, Firefox) využívají JIT k tomu, aby dokázaly plynule spouštět složité webové aplikace a hry. |
| C# (.NET / CLR) | Common Language Runtime překládá IL (Intermediate Language) kód do strojového kódu pomocí JIT (nebo nověji AOT – Ahead-Of-Time). |
| Python (PyPy) | Alternativní implementace Pythonu s JIT kompilátorem, která výrazně zrychluje numerické výpočty. |
Tip: Zatímco JIT kompiluje kód během běhu, opačným přístupem je AOT kompilace (Ahead-Of-Time), kdy se veškerý kód přeloží do strojového kódu ještě před spuštěním aplikace, což přináší okamžitý start bez počáteční prodlevy na zahřátí JIT motoru.
