La biblioteca ASM es un proyecto del consorcio OW2 . Proporciona una API sencilla para descomponer, modificar y recomponer clases Java binarias (es decir, bytecode ). El proyecto fue concebido y desarrollado originalmente por Eric Bruneton. Actualmente, ASM se centra en Java y no dispone de un backend que exponga otras implementaciones de bytecode (como bytecode de .NET , bytecode de Python , etc.).
El nombre "ASM" no es un acrónimo: es simplemente una referencia a la palabra clave asm de C, que permite implementar algunas funciones en lenguaje ensamblador. [ 1 ]
Usos
ASM proporciona una biblioteca sencilla que expone los componentes internos agregados de una clase Java determinada a través de su API orientada a visitantes . Además de esta API de visitantes, ASM también proporciona una API de árbol que representa las clases como construcciones de objetos. Ambas API se pueden utilizar para modificar el código binario de bytes, así como para generar nuevo código de bytes (mediante la inyección de nuevo código en el código existente o mediante la generación de clases completamente nuevas). La biblioteca ASM se ha utilizado en diversas aplicaciones, tales como:
- Rendimiento y elaboración de perfiles
- Se pueden inyectar llamadas de instrumentación que capturen métricas de rendimiento en los binarios de clases Java para examinar los datos de memoria/cobertura. (Por ejemplo, inyectando instrumentación en los puntos de entrada/salida).
- Implementación de la nueva semántica del lenguaje
- Por ejemplo, Groovy utiliza ASM para generar su código de bytes. Asimismo, se han implementado adiciones orientadas a aspectos al lenguaje Java mediante el uso de ASM para descomponer estructuras de clases con el fin de identificar puntos de corte, y posteriormente al reconstruir la clase inyectando código relacionado con aspectos en el binario. (Véase: AspectWerkz )
Invocar dinámico
Desde la versión 3.2, ASM ha añadido soporte para el nuevo invokedynamiccódigo, que permite la invocación de métodos basándose en la comprobación dinámica de tipos en los últimos binarios de JDK 7 , facilitando así el soporte para lenguajes de tipado dinámico . [ 2 ] [ 3 ]
Historial de lanzamientos
Esta tabla presenta únicamente versiones con avances significativos en la historia de ObjectWeb ASM, aparte de las versiones que principalmente corrigieron errores y mejoraron el rendimiento. [ 4 ]
Véase también
- Biblioteca de ingeniería de código de bytes
- Javassist
Referencias
- ^ Bruneton, Éric; Lenglet, Romain; Coupaye, Thierry (2002). "ASM: una herramienta de manipulación de código para implementar sistemas adaptables" . FranceTélécom I+D, DTL/ASR. CiteSeerX 10.1.1.117.5769 . Consultado el 23 de agosto de 2023 .
- 1 2 Forax, Remi (11 de junio de 2009). "ASM ahora admite invokedynamic" . Recuperado el 14 de noviembre de 2009 .
- ↑ "11 de junio de 2009: ASM 3.2 (etiqueta cvs: ASM_3_2)" . ObjectWeb. 11 de junio de 2009. Consultado el 14 de noviembre de 2009 .
- ↑ "Versiones" . ObjectWeb . Consultado el 6 de junio de 2020 .
Enlaces externos
- Sitio web oficial

- Página principal de OW2 - El consorcio OW2.
- AspectWerkz - Página principal del proyecto AspectWerkz. (Uno de los proyectos de mayor visibilidad que utiliza ASM).
- Bytecode Visualizer: complemento gratuito de Eclipse para visualizar y depurar código bytecode de Java que utiliza la biblioteca ASM.
- OW2
- Bibliotecas de Java (lenguaje de programación)
- Software que utiliza la licencia BSD.