Mein Google Foo versagt mich. Wenn ich ein Framework habe, das Codegenerierung basierend auf Annotationen durchführen kann, und ich möchte beide Build-Zeit Quelle Codegenerierung unterstützen, so dass der Entwickler es im Voraus kompilieren kann, auch sehen, was generiert wird, und möglicherweise sogar ändern der Code, sondern bieten auch Laufzeit Bytecode Generation für mehr dynamische Anwendungen, zum Beispiel plugin-basierte Anwendungen, kann ich ASM für beide Aufgaben verwenden, oder muss ich wirklich das zweimal programmieren, mit zwei verschiedenen Bibliotheken? Wenn es möglich ist, wäre ein Link zu einem Beispiel willkommen.Kann ich sowohl Java-Bytecode als auch Quellcode mit dem gleichen "Generator" mit ASM erzeugen?
Antwort
Während dies die Frage nicht direkt beantwortet, empfehle ich die Verwendung von Javassist über ASM.
Mit JavaSist starten Sie mit dem Generieren des Quellcodes und Sie geben ihn einfach dem JavaServer-Compiler, um ihn in Bytecode umzuwandeln, so dass Sie nun beide ohne zusätzliche Tricks zur Verfügung haben. Plus, IMHO, Generierung von Quellcode für Javassist ist viel einfacher als Herumspielen mit Bytecode und ASM.
Für Build-Zeit-Code-Generierung empfehle ich die Verwendung von Eclipse Java Compiler, die keine offene API dafür hat, aber die ist eigentlich sehr einfach zu bedienen. Sie können sehen, wie Sie es hier verwenden können: http://git.jetbrains.org/?p=mps/mps.git;a=tree;f=core/kernel/source/jetbrains/mps/compiler;h=6787147e3b36899574f042dd2132a4c08963670e;hb=HEAD (Dieser Code wurde meist von mir geschrieben). Es gibt auch ein Beispiel dafür, wie Sie kompilierte Klassen dynamisch laden können (innere Klasse MyClassLoader).
Ich bin mir nicht sicher, ob das für mich nützlich ist, aber ich gebe dir +1 für den Tippfehler: "Du kannst es hier * verklagen * LOL! –
- 1. Wie kann ich Gebäudebibliotheksprojekte verwalten, die sowohl eine statische Bibliothek als auch eine DLL erzeugen?
- 2. Brauche ich sowohl jdk als auch jre?
- 3. Wie kann ich CSS sowohl vertikal als auch horizontal ausrichten?
- 4. Kann ich sowohl ES6 als auch ES5 in der gleichen Codebasis verwenden?
- 5. Wie kann ich mit Lombok sowohl Standard-Accessoren als auch fließende Accessoren generieren?
- 6. kann ich sowohl DFD als auch ERD verwenden
- 7. Wie benutze ich sowohl pman als auch benutzerdefinierte Hilfedateien in Vim mit dem Viewdoc-Plugin?
- 8. DOMPDF Seitenausrichtung sowohl Querformat als auch Hochformat
- 9. mxmlc mit sowohl verknüpften als auch nicht verbundenen rsls?
- 10. Übereinstimmender beliebiger Text (sowohl Symbole als auch Leerzeichen) mit ANTLR?
- 11. Wie kann ich mit Flask sowohl HTML- als auch JSON-Inhalte bereitstellen?
- 12. 'NSFetchedResultsController unterstützt nicht sowohl Änderungsverfolgung als auch Abrufanforderung mit NSDictionaryResultType'
- 13. kann ich sowohl komprimierte Dateien und unkomprimierte Dateien mit dem gleichen Befehl grep
- 14. jQuery: Benötige ich sowohl keyUp als auch Ereignisse?
- 15. Wie kann ich in Vim suchen, mit regulären Ausdrücken für Buchstaben (sowohl ASCII als auch ASCII)?
- 16. Wie kann ich hebräische Zeichen sowohl iso8859-8 als auch utf8 in einer Zeichenfolge mit php
- 17. Mit libgdx, wie kann ich einem ScrollPane sowohl Text als auch Bilder hinzufügen?
- 18. Wie kann ich sowohl zweistellige als auch vierstellige Jahre mit einem einzigen Aufruf von DateTime.ParseExact akzeptieren?
- 19. Swift, Variable mit dem gleichen als Methodennamen
- 20. Numpy Argmax. Wie berechne ich sowohl max als auch argmax?
- 21. Wie kann ich das Layout erstellen, das sowohl in Tablet als auch in Telefon funktioniert?
- 22. Sowohl Dns.GetHostAddress als auch Dns.GetHostEntry geben nur die IPv4-Adresse zurück. Wie bekomme ich sowohl ipv4- als auch ipv6-Adressen?
- 23. SCONS erstellen sowohl statische als auch gemeinsame Bibliothek
- 24. Zeigen Sie sowohl zusammenfassende als auch individuelle Fehlermeldungen mit dem jQuery Validierungs-Plugin an
- 25. C# wpf - kann nicht sowohl DisplayMemberPath als auch ItemTemplate setzen
- 26. Kann ein App-Dienst sowohl Mobilgeräte als auch Websites unterstützen?
- 27. Kann Hyperlinktext sowohl Wörter als auch dekorative Bilder enthalten?
- 28. kann eine Programmiersprache sowohl Client- als auch Serverseite sein?
- 29. Wie installiere ich sowohl java7 als auch java 8?
- 30. Ein Fenster, das sich sowohl modal als auch nichtmodal verhält
Ich kann Ihren Standpunkt sehen. Ich habe Javaassist vor einer Weile angeschaut. Wenn niemand weiß, dann werde ich das wahrscheinlich tun. –
Ich habe es nochmal angeschaut, und ich bin mir nicht sicher, wie ich das mit Javassist machen soll. Ihr "Quellcode", den Sie verwenden, um die Klassendateien zu generieren, wird wahrscheinlich Dinge wie "$ cflow (...)" enthalten, also ist es kein echter Java-Code. Und ich kann nur Methoden sehen, um die kompilierte Klasse in CtClass zu speichern. Sind Sie sicher, dass dies unterstützt wird? –
Keine andere Antwort nach einem Tag. Darf mit ASM nicht möglich sein, damit Sie die Punkte bekommen. –