A Javassist (Java programming assistant) egy Java könyvtár, amely olyan eszközt nyújt, amelynek segítségével egy alkalmazás Java bájtkódját lehet manipulálni. Ebben az értelemben Javassist támogatást nyújt a strukturális betekintéshez, pl. megadja a lehetőséget, hogy megváltoztathassuk egy osztály implementációját futás időben.
A bájtkód manipulálás betöltési időben történik a osztály betöltőn (angolul class loader-en) keresztül.
Javassist engedélyezi a Java program számára, hogy új osztályokat hozzon létre futásidőben, továbbá class fájlokat módosíthasson a JVM-be való betöltéskor. Más hasonló bájtkód szerkesztőktől különbözően Javassist kétszintű API-t nyújt: forráskód szintűt és bájtkód szintűt. A forráskód szintű API használatával a fejlesztők szerkeszthetik a class fájlt anélkül, hogy ismernék a Java bájtkód specifikációt, az egész API-t a Java nyelv szókincséhez tervezték. A fejlesztők meghatározhatnak beszúrandó bájtkódot Java forrás szöveg formátumban, amit majd a Javassist menet közben lefordít. A bájtkód szintű API viszont lehetővé teszi a felhasználó számára, hogy közvetlenül szerkeszthessen egy class fájt, kvázi másik editorként.
Használata Javassist-et a következő esetekben használják: Bájtkód megadásához forráskóddal - le tud fordítani forrás szöveg részleteket online módon (pl.csak egy utasítást). AOP-hez – új metódusok adhatók hozzá a class-hoz és beszúrás előtt/után/közbeni advice-ok hajthatók végre mind a hívó, mind a hívó oldalán. futás idejű betekintéshez – egy metaobjektumot lehet használni, amely vezérli az alapszintű objektumok metódushívásait. távoli metódushíváshoz – hívható egy webszerveren futó távoli objektumon egy metódus. Ez egy alternatívája lehet az Java RMI-nek avval a különbséggel, hogy nincs szükség egy stub fordítóra, mint amilyen az rmic.
Jegyzetek
További információk Javassist projekt weboldala javassist a JBoss Labs-nál JavaAssist Tutorial
Fordítás
Kapcsolódó szócikkek ObjectWeb ASM Byte Code Engineering Library
Kategória:Java könyvtárak