Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Библиотека ASM является проектом Консорциума OW2 . Он предоставляет простой API для декомпозиции, изменения и перекомпоновки двоичных классов Java (т. Е. Байт-кода ). Первоначально проект был задуман и разработан Эриком Брюнетоном. В настоящее время ASM ориентирован на Java и в настоящее время не имеет серверной части, которая предоставляет другие реализации байт-кода (например, байт-код .NET, байт-код Python и т. Д.).

Имя ASM ничего не означает: это просто ссылка на ключевое слово asm языка C, которое позволяет реализовать некоторые функции на языке ассемблера. [1]

Использует [ редактировать ]

ASM предоставляет простую библиотеку, которая предоставляет внутренние агрегированные компоненты данного класса Java через его ориентированный на посетителей API. ASM также предоставляет поверх этого API посетителя древовидный API, который представляет классы как конструкции объектов. Оба API могут использоваться для изменения двоичного байт-кода, а также для генерации нового байт-кода (путем внедрения нового кода в существующий код или путем генерации новых классов в целом). Библиотека ASM использовалась в нескольких различных приложениях, таких как :

  • Производительность и профилирование
Вызовы инструментальных средств, которые фиксируют показатели производительности, могут быть введены в двоичные файлы классов Java для проверки данных о памяти / покрытии. (Например, введение инструментов в точках входа / выхода.)
  • Реализация семантики нового языка
Например, Groovy использует ASM для генерации своего байт-кода. Кроме того, аспектно-ориентированные дополнения к языку Java были реализованы с использованием ASM для декомпозиции структур классов для точной идентификации, а затем снова при воссоздании класса путем инъекции аспектно-ориентированного кода обратно в двоичный файл. (См .: AspectWerkz )

Invokedynamic [ править ]

Начиная с версии 3.2, в ASM добавлена ​​поддержка нового invokedynamicкода, который позволяет вызывать методы, полагаясь на динамическую проверку типов в последних двоичных файлах JDK 7 , что упрощает поддержку языков с динамической типизацией . [2] [3]

История выпусков [ править ]

В этой таблице представлены только выпуски со значительными шагами в истории ObjectWeb ASM, за исключением версий, в которых в основном исправлены ошибки и улучшена производительность. [4]

См. Также [ править ]

Ссылки [ править ]

  1. ^ Брюнетон, Эрик; Ленглет, Ромен; Купе, Тьерри (2002). «ASM: инструмент манипулирования кодом для реализации адаптируемых систем» . FranceTélécom R&D, DTL / ASR . Проверено 7 июня 2020 . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ a b Форакс, Реми (11.06.2009). «ASM теперь поддерживает invokedynamic» . Проверено 14 ноября 2009 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ «11 июня 2009: ASM 3.2 (cvs-tag: ASM_3_2)» . ObjectWeb. 2009-06-11 . Проверено 14 ноября 2009 . CS1 maint: обескураженный параметр ( ссылка )
  4. ^ «Версии» . ObjectWeb . Проверено 6 июня 2020 . CS1 maint: обескураженный параметр ( ссылка )

Внешние ссылки [ править ]

  • Библиотека ASM - домашняя страница проекта ASM.
  • ASM-Based Список проектов - перечень проектов, связанных с использованием библиотеки ASM.
  • OW2 Home - Домашняя страница Консорциума OW2.
  • AspectWerkz - Домашняя страница проекта AspectWerkz. (Один из самых заметных проектов, в котором используется ASM.)
  • Bytecode Visualizer - бесплатный плагин Eclipse для просмотра и отладки байт-кода Java, который использует библиотеку ASM