Я ищу хорошо поддерживаемую библиотеку манипуляции байт-кодом Java с интуитивно понятным API. Кажется, их довольно много. Любые предложения, по которым можно попробовать?
Предложения по использованию байткода Java
Ответ 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 являются наиболее часто используемыми. Белл умирает.