Byte Code Engineering Library

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Haffman (обсуждение | вклад) в 17:20, 24 сентября 2010 (окончание работы). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Jakarta BCEL
Тип Библиотека модификации байт-кодов
Разработчик Apache Software Foundation
Написана на Java
Операционная система Кроссплатформенное программное обеспечение
Последняя версия 5.2 (Шаблон:Release date)
Репозиторий github.com/apache/common…
Лицензия Apache License 2.0
Сайт jakarta.apache.org/bcel/

Byte Code Engineering Library (сокр. BCEL) — проект Apache Foundation, подпроект Jakarta, представляющий собой API для декомпиляции, изменения и повторной компиляции файлов классов Java (состоящих из байт-кодов). Проект изначально был задуман и разработан Маркусом Дамом, а впоследствии — безвозмездно передан Apache Jakarta foundation 27 октября 2001 года. На данный момент Java-ориентирован и не поддерживает байт-коды .NET, Python и т. д.

Использование

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

  • Компиляция, декомпиляция и обфускация байт-кодов
  • Производительность и профилирование
Например, в код могут быть введены специальные фрагменты, замеряющие производительность или получающие информацию о работе части программы.
  • Внедрение новой семантики языка
К примеру, элементы аспектно-ориентированного программирования в Java были введены путём пересборки классов с помощью BCEL