BCEL (Byte Code Engineering Library)
Последнее изменение этой страницы: 14:17, 31 октября 2016.
Разработчики: | Apache Software Foundation |
---|---|
Постоянный выпуск: | 5.2 / Шаблон:Release date |
Написана на: | Java |
Операционная система: | Cross-platform |
Тип ПО: | Bytecode Engineering Library |
Лицензия: | Apache License 2.0 |
Веб-сайт | http://commons.apache.org/bcel/ |
BCEL (англ. Byte Code Engineering Library — «Техническая библиотека байт-кода») — замороженный[1] проект Apache Foundation, безвозмездно переданный 27 октября 2001 года Jakarta foundation. Изначально разработан Маркусом Дамом (англ. Marcus Dahm). BCEL представляет собой API для декомпиляции, изменения и повторной компиляции файлов класса Java, состоящих из байт-кодов. Как следствие, Java-ориентирован и не поддерживает байт-коды .NET, Python и т. д.[2]
Содержание
Apache Software Foundation
Apache Software Foundation (сокр. ASF) — международное сообщество-фонд, способствующее развитию проектов программного обеспечения Apache. Было сформировано в июне 1999 года из Apache Group в Делавэре, США.[3] Зарождение фонда связано с разработкой группой Apache Group веб-сервера Apache в 1995 году. Сам фонд официально основан 25 марта 1999 года.[4]
Разработчики сообщества — энтузиасты со всего мира. Участвуют в различных Open Source проектах. Код пишется общими усилиями, что отличает ASF от других организаций. Есть собственная удобная лицензия — Apache Software License.
Существование такой лицензии обусловлено одной из задач компании: юридической защиты её участников и самой марки «Apache». Сама лицензия может применяться и для других проектов.
Чтобы попасть в ASF, надо внести значительный вклад в разработку или развитие проектов. Каждым из них руководит, в свою очередь, команда избранных экспертов. Как новичков поощряют вступлением в фонд за активное написание кода, так и означенные эксперты вовсю принимают участие в разработке. У фонда есть ряд спонсоров. Среди платиновых (более 100 000 $/год) такие компании, как Google, Yahoo! и с 2008 года Microsoft.
Jakarta Project
Проект Jakarta — один из списанных (по состоянию на 21 декабря 2011 года[5]) проектов фонда Apache Software Foundation. Был списан, так как никаких подпроектов не осталось. Основанный в 1999 году, проект владел набором разнообразных популярных решений с открытым кодом Java. С 2005 года ведётся переход подпроектов на верхний уровень ASF. Некоторые покидали проект Jakarta, чтобы стать таковыми, некоторые присоединялись к другим проектам верхнего уровня (Commons), а часть изъяли из обращения. Таким образом, по прошествии шести лет проект Jakarta списали.[6]
Особенностью проекта было развитие и поддержание свободного распространяемого программного обеспечения, написанное на языке программирования Java.[7]
Описание BCEL
Byte Code Engineering Library (Apache Commons BCEL™) предназначен предоставлять пользователям удобный подход к анализу, созданию и управлению (двоичными) файлами классов Java (теми, что заканчиваются .class). Классы представлены объектами, которые содержат всю символьную информацию о данном классе: методы, поля и, в частности, инструкции байт-кода.
Такие объекты могут быть прочитаны из существующего файла, преобразованы программой (например, классом загрузчика во время выполнения) и снова записаны в файл. Ещё более интересное применение — создание классов с нуля во время выполнения. Byte Code Engineering Library (BCEL) также может быть полезна, если вы хотите узнать о виртуальной машине Java (JVM) и формате файлов Java .class.
BCEL содержит верификатор байт-кода под названием JustIce, который обычно даёт вам гораздо более полную информацию о том, что случилось с вашим кодом, чем стандартное сообщение виртуальной машины Java.
BCEL уже успешно используется в некоторых проектах, таких, как компиляторы, оптимизаторы, обфускаторы, генераторы кода и средства анализа. В последние несколько лет проектом почти не занимаются. Ему можно помочь, если заглянуть в ASM проект на ObjectWeb.[1]
Использование
BCEL разбирает Java-класс на объекты существующих в нём конструкций (в отличие от обычных дизассемблеров, которые просто генерируют ассемблерный код). Эти объекты могут изменять свои байт-коды, а также создавать новые (вставкой их в существующий код или с помощью генерации нового класса целиком). Библиотека BCEL используется для выполнения следующих функций приложений:
- Компиляция, декомпиляция и обфускация байт-кодов;
- Производительность и профилирование;
- Например, в код могут быть введены специальные фрагменты, замеряющие производительность или получающие данные о работе части программы.
- Внедрение новой семантики языка;
- К примеру, элементы аспектно-ориентированного программирования в Java были введены путём пересборки классов с помощью BCEL.
Список источников
- ↑ 1,0 1,1 Последняя публикация на официальном сайте BCEL датируется 18 февраля 2014 года.
- ↑ Byte Code Engineering Library — Википедия.
- ↑ Apache Software Foundation — Википедия.
- ↑ Apache Software Foundation — Wikipedia.
- ↑ Jakarta Project — Wikipedia.
- ↑ Официальный сайт проекта Jakarta.
- ↑ Apache Jakarta Project — Википедия.
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.