Предложения библиотеки манипулирования байт-кодом Java - PullRequest
13 голосов
/ 28 марта 2010

Я ищу хорошо поддерживаемую библиотеку манипулирования байт-кодом Java с интуитивно понятным API. Кажется, их там довольно много. Есть предложения, какие попробовать?

Ответы [ 3 ]

6 голосов
/ 28 марта 2010

Лучший ответ на ваш вопрос будет зависеть от ваших конкретных потребностей и целей;если вы можете расширить то, что вы пытаетесь достичь, я, возможно, могу предложить более индивидуальный ответ.

Вместо этого, однако, по моему опыту, ASM предлагает, вероятно, лучшеесочетание зрелости, гибкости и простоты использования:

  • Он находится на стадии относительно активной разработки: даже несмотря на то, что последний выпуск выпущен в июне 2009 года, разработчики регулярно совершают коммиты на свои VCS.
  • Он уже широко используется в ряде известных Java-продуктов, таких как AspectJ, Groovy, Cobertura и многих других, что обещает широкую базу пользователей и, следовательно, широкое сообщество для поддержки.
  • Этодовольно тщательно задокументированы, и есть ряд учебных пособий, руководств пользователя и справочных документов, доступных как от OW2 Consortium , так и от сообщества в целом.

NB В комментарии @Yuri слева ниже описана ситуация, с которой я лично еще не сталкивался, но которая может стать серьезным препятствием.Помните его наблюдения и опыт при оценке различных библиотек манипулирования байт-кодом.

4 голосов
/ 28 марта 2010

Это на самом деле зависит от того, как вы определяете интуитивно понятный ;-) Я начал использовать ASM две недели назад для выполнения определенной задачи в моем текущем проекте, и это сработало как шарм. Мне потребовалось всего пару часов, чтобы понять и использовать его, но я бы не назвал API интуитивно понятным. Но если вы немного знакомы с байт-кодом Java и знакомы с шаблоном посетителей, кривая обучения не очень высокая, IMO.

Другое преимущество ASM заключается в том, что он, по-видимому, связан со стандартным API, по крайней мере, в Sun JDK, хотя и в другом пакете (com.sun.xml.internal.ws.org.objectweb.asm и подпакетах).

3 голосов
/ 28 марта 2010

Взгляните на эту статью: http://www.pabrantes.net/blog/space/start/2008-03-24/1

Немного стар, но все еще актуально.

ASM и Javassist являются наиболее используемыми в настоящее время. Bcel умирает.

...