Next: Robosztus és biztonságos Up: A nyelv legfontosabb tulajdonságai Previous: Architektúra független és hordozható   Tartalomjegyzék


1.5.1.4       Interpretált és dinamikus

Az interpretált végrehajtás kombinálva a futás idejű betöltéssel a fejlesztési ciklust nagy mértékben felgyorsítja. A Jávából eltűntek a C-ből ismert header állományok, a feltételes fordítás és más programállományok fordítás közbeni beolvasása #include. A lefordított programok tartalmaznak a szerkesztéshez szükséges minden információt. Elég csak a megváltozott állományokat lefordítanunk és a program máris futtatható. Egyébként a Jáva támogatja a nagybani programozást, az összetartozó osztályok egy csomagba foghatók és egyszerre fordíthatók. A láthatóság is figyelembe veszi a csomagokat. A C++ explicit friend deklarációjának szerepét itt a csomagra vonatkozó láthatóság veszi át. A kapcsolatszerkesztő helyét az ú.n. „osztály-betöltő” veszi át, amely futás közben betölti az egyes osztályokat megvalósító lefordított, Byte kódú programállományokat. Az osztály-betöltő nem csak helyi állományokból, de szükség esetén, a hálózaton keresztül is képes kódot letölteni.

Az ú.n. „törékeny alaposztály” problémát a Jáva úgy kerüli meg, hogy az osztályok adatkomponenseire, metódusaira a Byte kódban is szimbolikusan hivatkoznak, a hivatkozások konkrét címekké kötése csak futási időben, a virtuális gépben történik meg.

A közbülső kódban megmaradt szimbolikus információk megkönnyítik a programok nyomkövetését. Sajnos az interpretált végrehajtásnak van egy nagy hátránya is. A programok sokkal (kb. 10-20-szor) lassabban futnak, mint a gépi kódú megfelelőik. Bár a virtuális gép elég ügyesen lett kitalálva és a fordítóprogram is mindent megtesz azért, hogy ezt a virtuális architektúrát a lehető legjobban kihasználja, de még így sem vetekedhet a gépi utasítások sebességével. Ehhez még hozzáadódik a szimbolikus hivatkozások feloldásának ideje, a különböző betöltési- és futásidejű ellenőrzések, a tárgazdálkodási modellel járó szemétgyűjtési algoritmus futásához szükséges idő. A lassúság ellen jelenleg nem sokat tehetünk, legfeljebb arra gondolhatunk, hogy az alkalmazások jelentős részénél a gyakori felhasználói közreműködés igénye miatt a program sebessége nem a legfontosabb követelmény. Persze a Jáva programok meghívhatnak gépi kódú (native) eljárásokat is, de ezzel elveszítik az „architektúra-független” tulajdonságukat.


Next: Robosztus és biztonságos Up: A nyelv legfontosabb tulajdonságai Previous: Architektúra független és hordozható   Tartalomjegyzék

 
Misóka Zoltán 2000. 10. 05.