Подтвердить что ты не робот

Предложения по использованию байткода Java

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

4b9b3361

Ответ 1

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

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

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

N.B. Комментарий @Yuri, оставшийся ниже, описывает ситуацию, которую я лично еще не встречал, но которая может потенциально представлять собой значительное препятствие. Соблюдайте его наблюдение/опыт при оценке различных библиотек манипулирования байткодами.

Ответ 2

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

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

Ответ 3

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

Немного старый, но по-прежнему актуальный.

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