De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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

El nombre ASM no significa nada: es solo una referencia a la palabra clave asm de C, que permite implementar algunas funciones en lenguaje ensamblador. [1]

Usos [ editar ]

ASM proporciona una biblioteca simple que expone los componentes agregados internos de una clase Java determinada a través de su API orientada al visitante . ASM también proporciona, además de esta API de visitante, una API de árbol que representa clases como construcciones de objetos. Ambas API se pueden utilizar para modificar el código de bytes binario, así como para generar un nuevo código de bytes (mediante la inyección de 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 creación de perfiles
Las llamadas de instrumentación que capturan métricas de rendimiento se pueden inyectar en binarios de clase Java para examinar los datos de memoria / cobertura. (Por ejemplo, inyectar instrumentación en los puntos de entrada / salida).
  • Implementación de semántica de nuevos lenguajes
Por ejemplo, Groovy usa ASM para generar su código de bytes. Además, las adiciones orientadas a aspectos al lenguaje Java se han implementado mediante el uso de ASM para descomponer las estructuras de clase para la identificación de puntos de corte, y luego nuevamente al reconstituir la clase inyectando código relacionado con los aspectos nuevamente en el binario. (Ver: AspectWerkz )

Invocado dinámico [ editar ]

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 dinámica de tipos en los binarios JDK 7 más recientes , facilitando así el soporte para lenguajes escritos dinámicamente . [2] [3]

Historial de versiones [ editar ]

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

Ver también [ editar ]

Referencias [ editar ]

  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 . Consultado el 7 de junio de 2020 . CS1 maint: parámetro desalentado ( enlace )
  2. a b Forax, Remi (11 de junio de 2009). "ASM ahora admite invokedynamic" . Consultado el 14 de noviembre de 2009 . CS1 maint: parámetro desalentado ( enlace )
  3. ^ "11 de junio de 2009: ASM 3.2 (cvs-tag: ASM_3_2)" . ObjectWeb. 2009-06-11 . Consultado el 14 de noviembre de 2009 . CS1 maint: parámetro desalentado ( enlace )
  4. ^ "Versiones" . ObjectWeb . Consultado el 6 de junio de 2020 . CS1 maint: parámetro desalentado ( enlace )

Enlaces externos [ editar ]

  • Biblioteca ASM: la página de inicio del proyecto ASM.
  • Listado de proyectos basados ​​en ASM : una lista de proyectos que utilizan la biblioteca ASM.
  • Página de inicio de OW2: la página de inicio del consorcio OW2.
  • AspectWerkz : la página de inicio del proyecto AspectWerkz. (Uno de los proyectos de alta visibilidad que hace uso de la MAPE).
  • Bytecode Visualizer: complemento gratuito de Eclipse para ver y depurar el código de bytes de Java que utiliza la biblioteca ASM