JIT versus tolk
De Just In Time-compilatie (ook wel dynamische vertaling of JIT genoemd) is een techniek die wordt gebruikt om de kwaliteit van de runtime-prestaties van een computerprogramma te verbeteren. Het is de samenvoeging van twee ideeën die worden aangetroffen in runtime-omgevingen: Bytecode-compilatie en dynamische compilatie (een proces dat door sommige implementaties van programmeertaal wordt gebruikt om prestaties te verkrijgen terwijl een systeem een actie uitvoert).
Een tolk beschrijft het best de uitvoering van een actie via een computerprogramma. Er zijn een paar variaties op het soort acties dat een interpreter daadwerkelijk uitvoert: het voert direct de broncode van een programma uit; het vertaalt de broncode in een representatie die een efficiënte tussenrepresentatie is, en voert dan de genoemde code uit; het voert gecompileerde code uit die is opgeslagen en gemaakt door een compiler die deel uitmaakt van het interpreter-systeem.
JIT heeft de mogelijkheid om de voordelen van zowel de interpretatie als de statische (dat wil zeggen van te voren) compilatie te combineren. Als interpreter kan JIT de prestaties verbeteren door cachingresultaten van vertaalde blokken code - in vergelijking met eenvoudig elke regel of operand in de code opnieuw te evalueren telkens wanneer deze voorkomt (zoals in de geïnterpreteerde taal). Net als statische compilatiecode op het moment van ontwikkeling, kan JIT de code opnieuw compileren als dit het meest voordelige actieplan blijkt te zijn. Eveneens, in dezelfde geest als statische compilatie, is JIT in staat veiligheidsgaranties af te dwingen.
Net als compilers hebben tolken de mogelijkheid om code te vertalen. Beide zijn de primaire methoden voor het implementeren van programmeertalen; de categorieën 'compiler' of 'interpreter' zijn echter niet verschillend (vanwege hun dubbele rol als codevertalers). Het meest voor de hand liggende nadeel van het gebruik van een interpreter is dat wanneer de code eenmaal is geïnterpreteerd, het programma onvermijdelijk langzamer draait dan wanneer de code wordt gecompileerd; het kost echter veel minder tijd om codering te interpreteren dan om het te compileren en uit te voeren (vooral relevant bij het maken van prototypen en het testen van code).
Over het algemeen levert JIT veel betere prestaties dan tolken en biedt het in veel gevallen veel betere prestaties dan statische compilers. Zijn superioriteit ten opzichte van JIT ontslaat het echter niet van enkele belangrijke nadelen: er is een kleine vertraging bij het aanvankelijk uitvoeren van een applicatie (een neveneffect van de tijd nemen om bytecode te laden en te compileren). Het zal uiteindelijk betere codering genereren; de initiële vertraging die inherent is aan dit te doen, neemt echter toe met de kwaliteit van de codering.
Samenvatting:
1. JIT is een techniek die wordt gebruikt om de kwaliteit van de prestaties van runtime in een runtime-omgeving te verbeteren; een tolk definieert de uitvoering van een actie via een computerprogramma.
2. JIT combineert de voordelen van interpretatie en statische compilatie; een tolk kan code net als een compiler vertalen, maar ten koste van de snelheid van het programma.