En kompilator är ett program som konverterar datorprogrammeringskod skriven av en mänsklig programmerare till binär kod (maskinkod) som kan förstås och körs av en specifik CPU. Handlingen att omvandla källkod till maskinkod kallas "sammanställning". När all kod omvandlas på en gång innan den når de plattformar som kör den kallas processen för tidpunkten (AOT) sammanställning.
Många välkända programmeringsspråk kräver en kompilator inklusive:
Innan Java och C # komponerades eller tolkades alla datorprogram.
Tolkad kod kör instruktioner i ett program utan att sammanställa dem till maskinspråk. Den tolkade koden analyserar källkoden direkt, kopplas ihop med en virtuell maskin som översätter koden för maskinen vid tidpunkten för exekveringen eller utnyttjar förkompilerad kod. Javascript tolkas vanligtvis.
Kompilerad kod körs snabbare än tolkad kod eftersom den inte behöver göra något arbete vid den tidpunkt då åtgärden sker. Arbetet är redan gjort.
Java och C # använder just-in-time kompilatorer. Just-in-time kompilatorer är en kombination av AOT-kompilatorer och tolkar. När ett Java-program har skrivits förvandlar JIT-kompilatorn koden till bytkod snarare än till kod som innehåller instruktioner för en specifik hårdvaruplattforms processor. Bytekoden är plattformsoberoende och kan skickas och köras på valfri plattform som stöder Java. På ett sätt är programmet sammanställt i en tvåstegsprocess.
På liknande sätt använder C # en JIT-kompilator som är en del av Common Language Runtime, som hanterar exekveringen av alla .NET-applikationer. Varje målplattform har en JIT-kompilator. Så länge konvertering av mellanliggande bytekodspråk kan förstås av plattformen, körs programmet.
AOT-tidssammanställning (AOT) ger snabbare starttid, särskilt när mycket av koden körs vid start. Det kräver dock mer minne och mer diskutrymme. JOT-sammanställning måste rikta in sig på de minst kapabla för alla möjliga exekveringsplattformar.
Just-in-time-kompilering (JIT) profilerar målplattformen medan den körs och kompileras på nytt för att ge förbättrad prestanda. JIT genererar förbättrad kod eftersom den riktar sig mot den nuvarande plattformen, även om det vanligtvis tar mer tid att köra än AOT-kompilerad kod.