13 Stimmen

Vorschläge für die Java-Bytecode-Manipulationsbibliothek

Ich bin auf der Suche nach einer gut gepflegten Java-Bytecode-Manipulationsbibliothek mit einer intuitiven API. Es scheint eine ganze Menge von ihnen da draußen zu sein. Irgendwelche Vorschläge, welche zu versuchen?

7voto

RTBarnard Punkte 4144

Die beste Antwort auf Ihre Frage hängt von Ihren spezifischen Bedürfnissen und Zielen ab. Wenn Sie genauer beschreiben können, was Sie erreichen wollen, kann ich Ihnen vielleicht eine besser zugeschnittene Antwort geben.

Meiner Erfahrung nach ist das aber nicht der Fall, ASM bietet wahrscheinlich die beste Kombination aus Ausgereiftheit, Flexibilität und Benutzerfreundlichkeit:

  • Es wird relativ aktiv weiterentwickelt: Obwohl die letzte Version vom Juni 2009 stammt, nehmen die Entwickler regelmäßig Änderungen an ihrem VCS vor.
  • Es wird bereits in einer Reihe von bekannten Java-Produkten wie AspectJ, Groovy, Cobertura und vielen anderen eingesetzt, was eine breite Benutzerbasis und damit eine große Unterstützergemeinde verspricht.
  • Es ist ziemlich gründlich dokumentiert, und es gibt eine Reihe von Tutorials, Benutzerhandbüchern und Referenzdokumenten, die sowohl auf der OW2-Konsortium und die Gemeinschaft im Allgemeinen.

N.B.. In dem unten stehenden Kommentar von @Yuri wird eine Situation beschrieben, die ich persönlich noch nicht erlebt habe, die aber möglicherweise ein erhebliches Hindernis darstellen könnte. Behalten Sie seine Beobachtungen/Erfahrungen im Hinterkopf, wenn Sie die verschiedenen Bibliotheken zur Bytecode-Manipulation evaluieren.

4voto

Robert Petermeier Punkte 4042

Das hängt davon ab, wie Sie die Begriffe intuitiv ;-) Ich begann mit ASM vor zwei Wochen für eine bestimmte Aufgabe bei meinem aktuellen Projekt und es hat wunderbar funktioniert. Ich habe nur ein paar Stunden gebraucht, um es zu verstehen und zu benutzen, aber ich würde die API nicht gerade als intuitiv bezeichnen. Aber wenn man sich ein wenig mit Java-Bytecode auskennt und mit dem Visitor-Muster vertraut ist, ist die Lernkurve IMO nicht sehr hoch.

Ein weiterer Vorteil von ASM ist, dass es zumindest im Sun JDK offenbar mit der Standard-API gebündelt ist, wenn auch in einem anderen Paket (com.sun.xml.internal.ws.org.objectweb.asm und Unterpakete).

3voto

Roman Punkte 7493

Werfen Sie einen Blick auf diesen Artikel: http://www.pabrantes.net/blog/space/start/2008-03-24/1

Ein bisschen alt, aber immer noch aktuell.

ASM und Javassist sind die am häufigsten verwendeten Programme. Bcel liegt im Sterben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X