2009-11-25 18 views
9

Ich habe ein Java-Projekt und intern ist es abhängig von asm jar. Seltsamerweise weiß ich nicht einmal, warum mein Projekt irgendwie von dieser Bibliothek abhängig ist (könnte von maven als transitive Abhängigkeit eingeführt werden))?ASM jar - Warum hängt mein Java-Projekt davon ab?

Kann mir jemand helfen, zu wissen warum braucht man asm jar?

Vielen Dank im Voraus!

EDIT: Können Sie auch erwähnen, für welche Zwecke/Use-Cases könnte man ASM Glas brauchen?

+1

Das ist ASM: asm.ow2.org - kann verwendet werden, um Klassendateien für die Messung der Codequalität zu instrumentieren –

+0

Andreas, wenn ich Recht habe, sagen wir, dass asm uns hilft, einige Manipulationen im Bytecode des bereits geladenen Bytecodes vorzunehmen JVM? – peakit

Antwort

12

ASM ein Bytecode Manipulation Rahmen ist (this page für eine nette Einführung sehen) und wird durch viele Dinge, die Durchführung ... Bytecode-Manipulation verwendet: Frameworks Proxy-Generierung und Reflexion (Spring, Hibernate, etc.), spöttischen Frameworks (EasyMock, JMock, etc), Code-Analyse-Tools (PMD, Findbugs, usw.). Tatsächlich führt das ASM-Projekt eine Liste von users nach Kategorie organisiert, überprüfen Sie es. Wie von Vincent erwähnt, können Sie, wenn Sie transitiv auf ASM angewiesen sind, das dependency:tree Ziel oder die dependency report (siehe PMD und Findbugs Links oben für Beispiele) helfen, die Situation zu analysieren und herauszufinden, woher es kommt. Dies berücksichtigt jedoch nicht die Abhängigkeiten von Maven-Plugins, die Sie verwenden, sondern nur Abhängigkeiten von Ihrem Projekt.

1

Welche anderen Abhängigkeiten hat Ihr Projekt? Ich vermute, dass eines der Gläser, die Sie benötigen (z. B. Spring oder Hibernate) selbst erfordert asm.jar?

+0

Brian, ich benutze Spring stark in meinem Projekt .. Aber warum braucht Spring asm? Nur neugierig ... – peakit

+0

Ich weiß es nicht, ich gestehe. Es kann Bytecode-Injection für Aspekte durchführen, aber ich würde das überprüfen. –

+0

macht nichts! Trotzdem danke für die Hinweise. – peakit

3

Maven-2 benötigt asm.jar, um die Anwendung zu kompilieren und auszuführen.

Here für weitere Informationen.

EDIT:

Aufgrund der vielen möglichen Verwendungen von Programmanalyse, Generierung und Umwand- mation Techniken, enthalten viele Werkzeuge zur Analyse, Erzeugung und Transformationsprogramme umgesetzt wurden, für viele Sprachen, Java . ASM ist eines von diese Tools für die Java-Sprache, für die Laufzeit - aber auch Offline - Klasse Generierung und Transformation. Die ASM1-Bibliothek wurde daher so konzipiert, dass kompilierte Java-Klassen bearbeiten. Es wurde auch entworfen, um so schnell und so klein wie möglich zu sein. Es ist wichtig, so schnell wie möglich zu sein, um die Anwendungen, die ASM zur Laufzeit für die dynamische Klasse oder die Transformation verwenden, nicht zu sehr zu verlangsamen. Und so klein wie möglich zu sein ist wichtig, um in speicherbeschränkten Umgebungen zu verwenden, und um die Größe der kleinen Anwendungen oder Bibliotheken mit ASM Größe zu vermeiden. ASM ist nicht das einzige Werkzeug zum Generieren und Transformieren kompilierter Java Klassen, aber es ist eines der neuesten und effizientesten. Es kann von http://asm.objectweb.org heruntergeladen werden. Seine Hauptvorteile sind die folgenden: 1) Es hat eine einfache, gut gestaltete und modulare API, die einfach zu bedienen ist. 2) Es ist gut dokumentiert und verfügt über ein zugeordnetes Eclipse-Plugin. 3) Es bietet Unterstützung für die neueste Java-Version, Java 6. 4) Es ist klein, schnell und sehr robust. 5) Die große Benutzergemeinschaft kann neue Benutzer unterstützen. 6) Seine Open-Source-Lizenz erlaubt es Ihnen, es in fast jeder Art und Weise zu verwenden, die Sie wollen.

Gefunden von this pdf-Datei. Ich habe den Eindruck, dass neben Java EE 6 auch ein eingebautes Tool, ASM zur Klassengenerierung und -transformation, hinzugekommen ist. Das PDF gibt Ihnen detaillierte Informationen über ASM.

Hoffe, das hilft.

+0

@aforloney, das ist die Abhängigkeit für maven-pmd plugin .. ich benutze nicht PMD .. warum brauchen wir asm dann? – peakit

+0

Ich fand ein PDF online, ich fügte es meinem Beitrag mit einem Klappentext hinzu, ich hoffe, das hilft. –

+0

Ahh .. nach @Andreas_D asm kann zum Instrumentieren der Klassendateien verwendet werden. @ aforloney, mag das sein, warum Maven's PMD Plugin braucht .. wat say? – peakit

1

Es ist möglich, die dependency plugin für Maven zu verwenden, um zu sehen, welche Bibliothek asm als Abhängigkeit hat.

+0

danke Vincent für das Vorschlagen! – peakit

Verwandte Themen