Een compiler is een softwareprogramma dat door een menselijke programmeur geschreven computerprogrammeercode omzet in binaire code (machinecode) die kan worden begrepen en uitgevoerd door een specifieke CPU. Het omzetten van broncode in machinecode wordt "compilatie" genoemd. Wanneer alle code in één keer wordt getransformeerd voordat het de platforms bereikt waarop het wordt uitgevoerd, wordt het proces de voorafgaande compilatie (AOT) genoemd.
Veel bekende programmeertalen vereisen een compiler, waaronder:
Vóór Java en C # werden alle computerprogramma's gecompileerd of geïnterpreteerd.
Geïnterpreteerde code voert instructies uit in een programma zonder ze te compileren in machinetaal. De geïnterpreteerde code ontleedt de broncode direct, wordt gekoppeld aan een virtuele machine die de code voor de machine vertaalt op het moment van uitvoering of maakt gebruik van vooraf gecompileerde code. Javascript wordt meestal geïnterpreteerd.
Gecompileerde code werkt sneller dan geïnterpreteerde code omdat deze geen werk hoeft te doen op het moment dat de actie plaatsvindt. Het werk is al gedaan.
Java en C # gebruiken just-in-time compilers. Just-in-time compilers zijn een combinatie van AOT-compilers en tolken. Nadat een Java-programma is geschreven, verandert de JIT-compiler de code in bytecode in plaats van in code die instructies bevat voor de processor van een specifiek hardwareplatform. De bytecode is platformonafhankelijk en kan worden verzonden en uitgevoerd op elk platform dat Java ondersteunt. In zekere zin is het programma in twee fasen samengesteld.
Evenzo gebruikt C # een JIT-compiler die deel uitmaakt van de Common Language Runtime, die de uitvoering van alle .NET-toepassingen beheert. Elk doelplatform heeft een JIT-compiler. Zolang de tussenliggende bytecode-taalconversie door het platform kan worden begrepen, wordt het programma uitgevoerd.
AOT-of-time (AOT) compilatie levert snellere opstarttijd op, vooral wanneer veel van de code wordt uitgevoerd bij het opstarten. Het vereist echter meer geheugen en meer schijfruimte. JOT-compilatie moet gericht zijn op de minst capabele van alle mogelijke uitvoeringsplatforms.
Just-in-time (JIT) compilatieprofielen van het doelplatform terwijl het draait en opnieuw compileert ter verbetering van de prestaties. JIT genereert verbeterde code omdat het zich richt op het huidige platform, hoewel het meestal meer tijd kost om te draaien dan AOT gecompileerde code.