Byte Code Engineering Library

Commons BCEL
FejlesztőApache Software Foundation
Legfrissebb stabil kiadás6.4.1 (stabil verzió, 2019. október 2.)[1]
Programozási nyelvJava
Operációs rendszerplatformfüggetlen
Kategóriabájtkód kezelő könyvtár
LicencApache 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á.[2]

Használat

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, 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)
  • statikus kódanalízis
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

  1. https://github.com/apache/commons-bcel/releases/tag/rel%2Fcommons-bcel-6.4.1, 2019. október 28.
  2. 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

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

  • 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)

Kapcsolódó szócikkek

  • Javassist
Sablon:Apache
  • m
  • v
  • sz
Apache Software Foundation
Felső szintű projektek
Abdera · Accumulo · ActiveMQ · Ambari  · Ant · Aries · Apache HTTP Server · APR · Avro · Axis · Axis2 · Bloodhound · Buildr · Camel · Cassandra · Cayenne · Chemistry · Click · CloudStack · Cocoon · Continuum · Cordova · CouchDB · cTAKES · CXF · Deltacloud · Derby · Directory · Empire-db · Felix · Flex · Forrest · Geronimo · Gora · Gump · Hadoop · Hama · HBase · Hive · HBase · Isis · Jackrabbit · James · JMeter · Karaf · Lenya · Mahout · Marmotta · Maven · MINA · mod_perl · MyFaces · ODE · OFBiz · OpenEJB · OpenJPA · OpenNLP · OpenOffice · PDFBox · Phoenix · POI · Pivot · Qpid · River · Roller · Samza · ServiceMix · Shindig · Shiro · Sling · Spark · Stanbol · Storm · SpamAssassin · Struts · Subversion · Sqoop · Tapestry · Tcl · Thrift · Tiles · Tomcat · Trafficserver · Turbine · Tuscany · UIMA · Velocity · Wave · Wicket · Wink · Xalan · Xerces · XMLBeans
Commons projektek
BCEL · BSF · Daemon · Jelly
Lucene projektek
Lucene Java · Lucene.Net · Nutch · Solr
Hadoop projektek
HDFS · HBase · Hive · Pig · Spark · ZooKeeper
Egyéb projektek
Chainsaw · Batik · FOP · Log4j · XAP · Log4Net · Ivy
Incubator projektek
ACE · Composer · JSPWiki · XAP
Nyugdíjazott projektek
AxKit · Beehive · Bluesky · Cactus · Excalibur · Jakarta · Harmony · HiveMind · Slide · Shale · stdcxx · iBATIS · Jakarta
Licenc sztenderdek
Category Apache weboldala · Category Kategória · Commons pageCommons
  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap