stringtranslate.com

Objeto Web ASM

La biblioteca ASM es un proyecto del consorcio OW2 . Proporciona una API simple para descomponer, modificar y recomponer clases binarias de Java (es decir, bytecode ). El proyecto fue concebido y desarrollado originalmente por Eric Bruneton. ASM está centrado en Java en la actualidad y no tiene un backend que exponga otras implementaciones de bytecode (como bytecode .NET , bytecode Python , etc.).

El nombre "ASM" no es un acrónimo: es sólo 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 agregados internos de una clase Java determinada a través de su API orientada a visitantes . ASM también proporciona, además de esta API de visitantes, una API de árbol que representa las clases como construcciones de objetos. Ambas API se pueden utilizar para modificar el bytecode binario, así como para generar un nuevo bytecode (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 ASM se ha utilizado en varias aplicaciones diversas, como:

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, Groovy utiliza ASM para generar su código de bytes. Además, se han implementado adiciones orientadas a aspectos al lenguaje Java utilizando ASM 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: AspectWerkz )

Invocación dinámica

Desde la versión 3.2, ASM ha agregado soporte para el nuevo invokedynamiccódigo, que permite la invocación de métodos basándose en la verificación de tipos dinámicos en los últimos binarios JDK 7 , facilitando así el soporte para lenguajes tipados dinámicamente . [2] [3]

Historial de versiones

Esta tabla presenta solo versiones con pasos significativos en la historia de ObjectWeb ASM, además de versiones que principalmente corrigieron errores y mejoraron el rendimiento. [4]

Véase también

Referencias

  1. ^ 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 .
  2. ^ ab Forax, Remi (11 de junio de 2009). "ASM ahora admite la función Invokedynamic" . Consultado el 14 de noviembre de 2009 .
  3. ^ "11 de junio de 2009: ASM 3.2 (cvs-tag: ASM_3_2)". ObjectWeb. 11 de junio de 2009. Consultado el 14 de noviembre de 2009 .
  4. ^ "Versiones". ObjectWeb . Consultado el 6 de junio de 2020 .

Enlaces externos