ОбъектВеб ASM
Оригинальный автор(ы) | Эрик Брюнетон |
---|---|
Разработчик(и) | ОВ2 |
Первоначальный выпуск | 2002 год |
Стабильная версия | 9.3 / 3 апреля 2022 г |
Репозиторий | |
Написано в | Ява |
Операционная система | Кросс-платформенный |
Тип | байт-кода Инженерная библиотека |
Лицензия | Лицензия БСД |
Веб-сайт | Асм |
Библиотека ASM — проект консорциума OW2 . Он предоставляет простой API для декомпозиции, изменения и перекомпоновки двоичных классов Java (т. е. байт-кода ). Первоначально проект был задуман и разработан Эриком Брунетоном. В настоящее время ASM ориентирован на Java и не имеет серверной части, которая предоставляет другие реализации байт-кода (такие как байт-код .NET , байт-код Python и т. д.).
Название «ASM» не является аббревиатурой: это просто ссылка на ключевое слово asm языка C, которое позволяет реализовать некоторые функции на языке ассемблера. [1]
Использование
[ редактировать ]ASM предоставляет простую библиотеку, которая предоставляет внутренние агрегатные компоненты данного класса Java через API, ориентированный на посетителей . Помимо этого API-интерфейса ASM также предоставляет API-интерфейс дерева, который представляет классы как конструкции объектов. Оба API можно использовать для изменения двоичного байт-кода, а также для генерации нового байт-кода (путем внедрения нового кода в существующий код или путем создания новых классов вообще). Библиотека ASM использовалась в нескольких различных приложениях, таких как :
- Производительность и профилирование
- Вызовы инструментирования, которые собирают показатели производительности, можно внедрить в двоичные файлы классов Java для проверки данных о памяти/покрытии. (Например, внедрение инструментов в точках входа/выхода.)
- Реализация новой языковой семантики
- Например, Groovy использует ASM для генерации своего байт-кода. Кроме того, аспектно-ориентированные дополнения к языку Java были реализованы с помощью ASM для разложения структур классов для идентификации точек, а затем снова при воссоздании класса путем введения аспектно-ориентированного кода обратно в двоичный файл. (См.: AspectWerkz )
Вызватьдинамический
[ редактировать ]Начиная с версии 3.2, в ASM добавлена поддержка нового invokedynamic
код, который позволяет вызывать методы на основе динамической проверки типов в последних двоичных файлах JDK 7 , что упрощает поддержку динамически типизированных языков . [2] [3]
История выпусков
[ редактировать ]В этой таблице представлены только выпуски со значительными шагами в истории ObjectWeb ASM, за исключением версий, в которых в основном исправлены ошибки и улучшена производительность. [4]
Выпускать | Дата выпуска | Основные моменты |
---|---|---|
2.0 | 2005-05-17 | Поддержка языка Java 5 |
3.2 | 2009-06-11 | поддержка нового invokedynamic код. [2] |
4.0 | 2011-10-29 | Поддержка языка Java 7 |
5.0 | 2014-03-16 | Поддержка языка Java 8 |
6.0 | 2017-09-23 | Кодовая база перенесена на Gitlab Поддержка языка Java 9 |
6.1 | 2018-03-11 | Поддержка языка Java 10 |
7.0 | 2018-10-27 | Поддержка языка Java 11 |
7.1 | 2019-03-03 | Поддержка языка Java 13 |
8.0 | 2020-03-28 | Поддержка языка Java 14 |
9.0 | 2020-09-22 | Поддержка языка Java 16. |
9.1 | 2021-02-06 | Поддержка языка Java 17 |
9.2 | 2021-06-20 | Поддержка языка Java 18 |
9.3 | 2022-04-03 | Поддержка языка Java 19, новая спецификация Maven |
См. также
[ редактировать ]- Инженерная библиотека байт-кода
- Явасист
Ссылки
[ редактировать ]- ^ Брюнетон, Эрик; Лангле, Ромен; Купай, Тьерри (2002). «ASM: инструмент манипулирования кодом для реализации адаптируемых систем» . FranceTélécom R&D, DTL/ASR. CiteSeerX 10.1.1.117.5769 . Проверено 23 августа 2023 г.
- ^ Перейти обратно: а б Форакс, Реми (11 июня 2009 г.). «ASM теперь поддерживает ignoredynamic» . Проверено 14 ноября 2009 г.
- ^ «11 июня 2009 г.: ASM 3.2 (тег cvs: ASM_3_2)» . ОбъектВеб. 11 июня 2009 г. Проверено 14 ноября 2009 г.
- ^ «Версии» . ОбъектВеб . Проверено 6 июня 2020 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Домашняя страница OW2 — Домашняя страница Консорциума OW2.
- AspectWerkz — Домашняя страница проекта AspectWerkz. (Один из широко известных проектов, использующих ASM.)
- Bytecode Visualizer — бесплатный плагин Eclipse для просмотра и отладки байт-кода Java, использующий библиотеку ASM.