Futásidejű fordítás

A Programozás Wiki wikiből
(JIT szócikkből átirányítva)

Futásidejű fordításnak (Just-In-Time (JIT) Compilation) azt a megoldást szokás nevezni, amelyben egy adott programot forrás- vagy köztes kódban terjesztenek és telepítenek a célplatformra, ahol a futtató környezet azt csakis közvetlenül a program meghívása során, annak végrehajtása előtt alakít át valamilyen könnyebben és gyorsabban feldolgozható formára - a forráskódú programokat tipikusan köztes kódra, míg az eleve köztes kódban terjesztett programokat gépi kódra -, amely kód majd aztán a tényleges végrehajtás alapját fogja képezni. Az így előállt tárgykódot a futtató platform az egyes futási menetek között megőrzi, és az újabb hívások ill. futtatások során már közvetlenül abból dolgozik, ezáltal jelentősen csökkentve a program elindulásához és végrehajtásához szükséges időt. Ha a program forráskódjában változás következik be, a futtató platform ezt automatikusan észleli, és az adott program gyorsabban végrehajtható tárgykódját újragenerálja, ezáltal fenntartva azt a látszatot, hogy a program közvetlenül forráskódjából kerül futtatásra, hiszen az utóbbin végrehajtott változtatások azonnal megjelennek a program működésében külön manuális fordítás végrehajtása nélkül is.

A futásidejű fordítást alkalmazó platformok és programozási nyelvek ötvözik az értelmezett és a fordított programok két nagy előnyét: ti. hogy az értelmezett programokhoz hasonlóan közvetlenül forráskódban szerkeszthetők és tárolhatók, amelyből nincs szükség "kézi" fordítással bináris állomány előállítására minden változtatást követően; ugyanakkor a közvetlenül értelmezett nyelveknél gyorsabban futtathatók a köztes vagy gépi kódra történt fordításnak köszönhetően.

A futásidejű fordítás ezen kívül lehetővé teszi, hogy az adott platform kvázi vagy ténylegesen platformfüggetlen módon kerüljön terjesztése - azaz minden célplatformra ugyanaz az identikus kód -, amelyből aztán a futásidejű fordító feladata az adott platform által leggyorsabban futtatható és annak sajátosságait maximálisan kihasználó (tárgykódú) programváltozat létrehozása. Ez a gyakorlatban azt jelenti, hogy ugyanaz a futásidejű fordító a konkrét futtató platform függvényében eltérő kódot is generálhat ugyanabból a forrásprogramból, a futtató hardver- és szoftverkörnyezet sajátosságainak megfelelően.