Byte Code Engineering Library
A Byte Code Engineering Library (BCEL) egy projekt, melyet az Apache Software Foundation szponzorál a Commons projekt részeként, hogy biztosítson egy egyszerű API-t bináris Java osztályok kezeléséhez (pl. bájtkód) kibontásához, módosításához, majd újra csomagolásához.
Commons BCEL | |
Fejlesztő | Apache Software Foundation |
Legfrissebb stabil kiadás | 6.4.1 (stabil verzió, 2019. október 2.)[1] |
Programozási nyelv | Java |
Operációs rendszer | platformfüggetlen |
Kategória | bájtkód kezelő könyvtár |
Licenc | Apache Licenc 2.0 |
A Commons BCEL weboldala |
A projektet eredetileg Markus Dahm fejlesztette, mielőtt hivatalosan az Apache Jakarta Alapítványnak adományozta volna 2001. október 27-én. A BCEL java-központú és jelenleg nem támogat egyéb bájtkód megvalósítást (pl. .NET bájtkód, Python bájtkód).
2011 júliusában került át az Apache Commons alá.[2]
Használat
szerkesztésA BCEL egy egyszerű objektum könyvtárat nyújt, amely segítségével egy adott Java osztály belső összetett komponensei felderíthetők egy API segítségével (szemben az alacsony szintű opcode-ok visszafejtésével). Ezek az objektumok különböző műveleteket biztosítanak a bináris bájtkód módosításához, épp úgy, mint az új bájtkód generálásához (új kód beszúrásához (injection) a létező kódon keresztül vagy új osztályok generálásához). A BCEL könyvtárat több különböző típusú alkalmazásban használják, mint pl.:
- Java bájtkód visszafejtés (angolul decompiling), programkód álcázás (angolul obfuscation), és programkód újraszervezése (angolul refactoring)
- teljesítmény- és sebességoptimalizálás
- Instrumentációs hívások, melyek teljesítmény mérésért felelősek, beszúrhatók a Java osztály bináris kódjába annak érdekében hogy megvizsgálható legyenek a memória/lefedettségi adatok. (Például, instrumentáció beszúrása belépés/kilépési pontoknál.)
- új nyelvi szemantikák megvalósítása
- Például, aspektusorientált kiegészítések a Java nyelvhez, melyeket a BCEL segítségével valósítottak meg. Ez úgy működik, hogy szétszedik osztály struktúrákat a töréspont azonosítások mentén, majd újra felépítik az osztályt a beszúrt aspektussal kapcsolatos kóddal kiegészítve a bináris kódban. (Lásd: AspectJ)
- FindBugs használja a BCEL-t a Java bájtkód analizálásánál hibákat okozó kód részletek azonosításához.
Jegyzetek
szerkesztés- ↑ https://github.com/apache/commons-bcel/releases/tag/rel%2Fcommons-bcel-6.4.1, 2019. október 28.
- ↑ Commons alá átkerülés. [2012. március 7-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. február 26.)
Fordítás
szerkesztésEz a szócikk részben vagy egészben a Byte Code Engineering Library című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További információk
szerkesztés- Jakarta ByteCode Engineering Library - BCEL projekt hivatalos honlapja.
- BCEL-Based Project Listing - projektek listája, melyek a BCEL könyvtárat használják.
- Apache Commons Home - az Apache Commons honlapja.
- AspectJ - az AspectJ projekt honlapja. (egyike a legismertebb projekteknek, mely a BCEL-t használja)