2010-08-02 8 views
30

Was sind die führenden Frameworks für Java-Code-Generierung?Java-Code-Generierung

Ich bin nicht auf der Suche nach einem DB oder App Generation Tool. Ich habe ein Skelett einer Klasse, und ich muss es mit verschiedenen dynamischen Teilen für verschiedene Anwendungsfälle generieren. Der Großteil der Klasse ist identisch, daher möchte ich Code ausführen, der verschiedene Varianten der Klasse generiert.

Wer kennt einen guten Rahmen?

Danke.

+5

Was müssen Sie tun? –

+4

http://c2.com/cgi/wiki?CodeGenerationIsaDesignSmell – oluies

+2

Versuchen Sie, etwas bestimmtes zu tun, oder ist dies nur eine Möglichkeit, eine andere Liste von Frameworks zu ernten? – skaffman

Antwort

14

cglib ist eine leistungsstarke, hohe Leistung und Qualität Code Generation Bibliothek

jet/velocity Vorlagen verwenden.

Wenn Sie eine ganze Anwendung erstellen möchten, überprüfen Sie JBoss Seam Framework.

+0

cglib wird von JUnit/EasyMock verwendet, ist also vielleicht schon in den Benutzerprojekten enthalten –

9

Beachten Sie, dass diese Programme sind in erster Linie für Ihr Projekt durch einen Kickstart Standardcode zu erzeugen.

2

SQL2Java generiert Datenbank-CRUD-Code aus dem DB-Schema.

3

[SQL2JAVA] ist ein großartiges Werkzeug. Es generiert alle [CRUD] Code für das Datenbankschema. Das Verbindungs-Pooling ist nicht gut genug. Sie können die Manager-Klasse anpassen, um Ihren eigenen Pool zu verwalten.

Andere als diese, wenn Sie mit Model Driven Development interessiert sind (MDD), können Sie mit [AndroMDA] oder [Borland Together], eines der besten [Eclipse] basiertes Tool gibt .

Wenn Sie daran interessiert sind, mit Codegenerierung und modellbasierter Softwareentwicklung ein Stück weiter zu gehen, sollten Sie sich [openArchitectureWare] ansehen.

andere Java-Entwicklungs-Tools, die Code-Generierung unterstützen, sind [Lombok] und [Löffel]. Project Lombok bietet Funktionen wie automatische Generierung der Standard-Getter/Setter-Methoden, automatische Ressourcenverwaltung (mit @Cleanup-Annotation) und annotierungsgesteuerte Ausnahmebehandlung.

[cglib], [Velocity Template] und [AppFuse] sind auch groß.

+15

** [Warum] ** setzen Sie ** [Klammern] ** um ** [Dinge] **? :) –

0

Ich nehme an, dass ASM die beliebteste Java-Bytecode-Generation-Bibliothek ist. Es ist die niedrigste Bytecode-Bibliothek, die es gibt, aber es gibt andere übergeordnete Codegenerierungsbibliotheken, die auf ASM basieren, obwohl die direkte Verwendung von ASM auch nicht zu schwierig ist (ein Vorteil der direkten Verwendung ist, dass die JAR-Größe von ASM sehr groß ist) klein).Einige von ASM Nutzer erwähnt bei http://asm.ow2.org/users.html


EDIT:

Für die Frage aktualisiert, die den Anwendungsfall erwähnt ("Ich habe ein Skelett einer Klasse, und ich brauche, um es zu erzeugen mit verschiedene dynamische Teile für verschiedene Anwendungsfälle. "), meine Antwort ist das Design zu verbessern, so dass alle Code-Duplikation entfernt wird und keine Code-Generierung benötigt wird. Lesen über verschiedene Design-Muster können einige Ideen geben, wie es geht. Für eine spezifischere Antwort müssen Sie Code zeigen und genauer auf Ihre Bedürfnisse eingehen.

+1

Aber aus einer einfachen Programmierperspektive ist es eine PITA und die Generierung von Quelle ist in gewissem Sinne einfacher. –

+0

Hängt davon ab, was Sie tun müssen. Bytecode-Generierung kann auch zur Laufzeit durchgeführt werden und kann verwendet werden, um existierende Klassen zu modifizieren, so dass es mächtiger ist, Quelldateien zu erzeugen. –

+3

Die Frage lautete: Codegenerierung; nicht Kompilierung. ASM ist viel zu niedrig für das, was gefragt wurde. – Recurse

2

verwendete ich den Druiden Database Manager: http://druid.sourceforge.net/

Aus db beginnt, das Reverse Engineering werden kann, und es kann Dokumentation, SQL, Klassen und Dateien basierend auf Tabellen und Felder erzeugen.

Die verwendete Vorlagensprache ist velocity.

Die Software ist über ein Plugin-System erweiterbar.

0

AtomWeaver http://www.atomweaver.com ist jetzt in der öffentlichen Betaversion. Es ist eine Codegenerations-IDE, die neben Ihrer aktuellen IDE verwendet werden kann (also kein Framework, sondern eine eigenständige App). Mit ihr können Sie einen Standardcode, aber auch ein komplettes Projekt generieren.

AtomWeaver implementiert ABSE (Atom Based Software Engineering), eine Form der modellgetriebenen Softwareentwicklung (hat nichts mit UML oder MDA zu tun).

Es ist im Wesentlichen ein Template-basiertes System.

6

http://www.andromda.org

AndroMDA (sprich: andromeda) ist ein Open-Source-Code-Erzeugungs Rahmen, den das Model Driven Architecture (MDA) Paradigma folgt. Es nimmt Modelle von CASE-Werkzeugen und generiert vollständig einsetzbare Anwendungen und andere Komponenten.

Ich habe es benutzt und es ist sehr kraftvoll. Es generiert nicht nur Konfigurationsdateien und Code von UML, sondern überlässt dem Entwickler nur die Implementierung der Geschäftsmethoden, sondern pflegt auch den generierten Code durch die Verwendung bekannter Dessing-Muster.

3

Versuchen Sie Xtext (http://www.eclipse.org/Xtext/). Sie verwenden XText, um eine DSL zu definieren, XText generiert einen Eclipse Editor, der diese DSL unterstützt. Dann können Sie XPand verwenden, um Vorlagen zum Generieren aller Arten von Text zu definieren (z. B. Java-Quellcode).

0

Eine weitere Abstimmung für die Velocity-Vorlagen-Engine. Ich habe es in mehreren Projekten verwendet, um EJB2.1-Standardcode, Datenbankobjekte usw. zu erzeugen. Funktioniert großartig und ist auch ziemlich einfach zu lernen.