Byte Code Engineering Library

A Wikipédiából, a szabad enciklopédiából
Commons BCEL
Fejlesztő Apache Software Foundation
Legfrissebb stabil kiadás 6.0 (2011. július 1.) +/-
Legfrissebb fejlesztői kiadás ismeretlen +/-
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 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.

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á.[1]

Használat[szerkesztés | forrásszöveg szerkesztése]

A 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, aspektus orientá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.

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

További információk[szerkesztés | forrásszöveg szerkesztése]

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez 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.