2010-08-02 18 views
30

¿Cuáles son los principales marcos para la generación de código java?Generación de código Java

No estoy buscando una herramienta de generación de bases de datos o aplicaciones. Tengo un esqueleto de una clase, y necesito generarlo con diferentes partes dinámicas para diferentes casos de uso. La mayoría de la clase es idéntica, por lo tanto, quiero ejecutar código que genere diferentes sabores de la clase.

¿Alguien sabe un buen marco?

Gracias.

+5

¿Qué necesitas hacer? –

+4

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

+2

¿Estás tratando de hacer algo específico, o es solo una forma de cosechar otra lista de marcos? – skaffman

Respuesta

14

cglib es un potente y de alto rendimiento y calidad Biblioteca de generación de código

jet/velocity están utilizando plantillas.

Si está buscando generar una aplicación completa, consulte JBoss Seam framework.

+0

cglib es utilizado por JUnit/EasyMock, por lo que tal vez ya esté incluido en el proyecto de los usuarios –

9

Tenga en cuenta que estas utilidades son principalmente para kickstarting su proyecto mediante la generación de código repetitivo.

2

SQL2Java genera el código CRUD de la base de datos del esquema DB.

3

[SQL2JAVA] es una gran herramienta. Genera el código [CRUD] para el esquema de base de datos. Su agrupación de conexiones no es lo suficientemente buena, puede personalizar su clase Manager para mantener su propio grupo.

Aparte de esto, si usted está interesado con el modelo de desarrollo impulsado por (MDD), se puede utilizar [AndroMDA] o [de Borland Together], una de las herramientas basadas mejor [Eclipse] por ahí .

Si está interesado en ir un poco más allá con la generación de código y entrar en el desarrollo de software impulsado por modelos, debería echar un vistazo a [openArchitectureWare].

Otras herramientas de desarrollo Java que apoyan la generación de código son [Lombok] y [Cuchara]. El Proyecto Lombok ofrece características como la generación automática de los métodos getter/setter predeterminados, la administración automática de recursos (usando la anotación @Cleanup) y el manejo de excepciones controladas por anotaciones.

[cglib], [plantilla Velocity] y [AppFuse] también son excelentes.

+15

** [¿Por qué] ** pones ** [corchetes] ** alrededor de ** [cosas] **? :) –

0

Supongo que ASM es la biblioteca de generación de códigos de bytes Java más popular. Es la biblioteca de códigos de bytes más baja que existe, pero hay otras bibliotecas de generación de códigos de alto nivel que están basadas en ASM, aunque usar ASM directamente tampoco es demasiado difícil (una de las ventajas del uso directo es que el tamaño de JAR de ASM es muy pequeña).Algunos de los usuarios de ASM se mencionan en http://asm.ow2.org/users.html


EDIT:

Para la pregunta actualizado, que menciona el caso de uso ("Tengo un esqueleto de una clase, y yo necesidad de generar con diferentes partes dinámicas para diferentes casos de uso. "), mi respuesta es mejorar el diseño para que se elimine toda duplicación de código y no se necesite generar código. Leer sobre diferentes patrones de diseño puede dar algunas ideas sobre cómo hacerlo. Para una respuesta más específica, deberá mostrar un código y ser más específico acerca de sus necesidades.

+1

Pero desde una perspectiva de facilidad de programación, es un PITA y la fuente de generación es en cierto sentido más fácil. –

+0

Depende de lo que necesite hacer. La generación de bytecode se puede hacer también en tiempo de ejecución y se puede usar para modificar clases existentes, por lo que es más poderoso que generar archivos fuente. –

+3

La pregunta era acerca de la generación de código; no compilación ASM es un nivel demasiado bajo para lo que se pidió. – Recurse

2

que utiliza la base de datos Administrador de Druida: http://druid.sourceforge.net/

Se parte de db, que puede ser la ingeniería inversa, y puede generar documentación, sql, clases y archivos basados ​​en tablas y campos.

El lenguaje de plantilla utilizado es la velocidad.

El software es extensible a través de un sistema de complemento.

0

AtomWeaver http://www.atomweaver.com ya está en beta pública. Es un IDE de generación de código que se puede usar junto con su IDE actual (por lo tanto, no es un marco, sino una aplicación independiente). Con él puedes generar código repetitivo, pero también un proyecto completo.

AtomWeaver implementa ABSE (Atom-Based Software Engineering), que es una forma de desarrollo de software basado en modelos (no tiene nada que ver con UML o MDA).

Es esencialmente un sistema basado en plantillas.

6

http://www.andromda.org

AndroMDA (pronunciado: andromeda) es un marco de la generación de código fuente abierto que sigue el paradigma Model Driven Architecture (MDA). Toma modelo (s) de CASE-tool (s) y genera aplicaciones completamente desplegables y otros componentes.

Lo he usado y es muy potente. No solo genera archivos de configuración y código de UML, sino que deja al desarrollador solo la implementación de los métodos de negocio para desarrollar, pero también mantiene el código de generación mediante el uso de patrones de diseño conocidos.

3

Pruebe Xtext (http://www.eclipse.org/Xtext/). Utiliza XText para definir un DSL, XText generará un Editor de Eclipse que soporte este DSL. Luego puede usar XP y definir plantillas para generar todo tipo de texto (por ejemplo, código java souce).

0

Otro voto para el motor de plantillas de Velocity. Lo he usado en múltiples proyectos, para generar código repetitivo EJB2.1, objetos de base de datos, etc. Funciona muy bien y es bastante fácil de aprender también.

Cuestiones relacionadas