====== 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.