Byte Code Engineering Library ( BCEL ) es un proyecto patrocinado por la Fundación Apache, anteriormente bajo su estatuto de Yakarta , para proporcionar una API simple para descomponer, modificar y recomponer clases binarias de Java (es decir, bytecode ). El proyecto fue concebido y desarrollado por Markus Dahm antes de ser donado oficialmente a la fundación Apache de Yakarta el 27 de octubre de 2001. Es parte de Apache Commons .
Usos
BCEL proporciona una biblioteca sencilla que expone los componentes agregados internos de una clase Java determinada a través de su API como construcciones de objetos (en lugar de desensamblar los códigos de operación de nivel inferior). Estos objetos también exponen operaciones para modificar el código de bytes binario, así como para generar un nuevo código de bytes (mediante la inyección de un nuevo código en el código existente o mediante la generación de nuevas clases en conjunto). La biblioteca BCEL se ha utilizado en varias aplicaciones diversas, como:
- Descompilación, ofuscación y refactorización de bytecode en Java
- Rendimiento y elaboración de perfiles
- Las llamadas de instrumentación que capturan métricas de rendimiento se pueden inyectar en binarios de clase Java para examinar datos de memoria/cobertura. (Por ejemplo, inyectar instrumentación en puntos de entrada/salida).
- Implementación de la nueva semántica del lenguaje
- Por ejemplo, se han implementado adiciones orientadas a aspectos al lenguaje Java utilizando BCEL para descomponer las estructuras de clase para la identificación de puntos de corte, y luego nuevamente al reconstruir la clase inyectando código relacionado con el aspecto nuevamente en el binario. (Ver: AspectJ )
- FindBugs utiliza BCEL para analizar el código de bytes de Java en busca de modismos de código que indiquen errores.
Véase también
Enlaces externos
- Sitio web oficial
- Listado de proyectos basados en BCEL: un listado de proyectos que utilizan la biblioteca BCEL.
- Apache Jakarta Home - La página de inicio de Apache Jakarta.
- AspectJ - Página de inicio del proyecto AspectJ. (Uno de los proyectos de alta visibilidad que utiliza BCEL).