2010-08-02 138 views
30

Java代码生成的主要框架是什么?Java代码生成

我不是在寻找一个数据库或应用程序生成工具。我有一个类的骨架,我需要为不同的用例生成不同的动态部分。该类的大部分是相同的,因此我想运行生成不同风格类的代码。

任何人都知道一个好的框架?

谢谢。

+5

你需要做什么? – 2010-08-02 06:40:34

+4

http://c2.com/cgi/wiki?CodeGenerationIsaDesignSmell – oluies 2010-08-02 06:42:29

+2

你是想做一些特定的事情,还是只是收集另一个框架列表的方式? – skaffman 2010-08-02 07:06:18

回答

14

cglib是一个强大的,高性能和高质量代码生成库

jet/velocity 正在使用的模板。

如果您希望生成整个应用程序,请检查JBoss Seam框架。

+0

cglib由JUnit/EasyMock使用,因此可能已经包含在用户项目中 – 2010-08-04 06:24:05

2

SQL2Java从数据库模式生成数据库CRUD代码。

3

[SQL2JAVA]是一个很好的工具。它生成数据库模式的所有[CRUD]代码。它的连接池不够好,你可以定制它的Manager类来维护你自己的池。

除此之外,如果你有兴趣与驱动开发(MDD)模型时,可以使用[AndroMDA的]或[Borland的共同],最好[日食]基于工具的一个在那里。

如果您有兴趣进一步研究代码生成并进入模型驱动的软件开发,您应该看看[openArchitectureWare]。支持代码生成

其他Java开发工具[龙目]和[。龙目岛项目提供了诸如自动生成默认getter/setter方法,自动资源管理(使用@Cleanup注释)和注解驱动异常处理等功能。

[CGLIB],[Velocity模板]和[AppFuse的]也很大。

+15

** [为什么] **是否将** [方括号] **放在** [东西] **周围? :) – 2012-09-09 14:45:29

0

我推测ASM是最流行的Java字节码生成库。它是最底层的字节码库,但还有其他更高级的代码生成库建立在ASM上,尽管直接使用ASM也不是太困难(直接使用的一个好处是ASM的JAR大小非常大小)。一些ASM的用户在http://asm.ow2.org/users.html


编辑提到:

有关更新的问题,其中提到的用例(“我有一个类的骨架,我需要生成它不同的使用情况下不同的动态部分“),我的答案是改进设计,以便删除所有代码重复并且不需要代码生成。阅读不同的设计模式可以给出一些关于如何去做的想法。对于更具体的答案,您需要显示一些代码并更加具体地了解您的需求。

+1

但是从编程的角度来看,它是一个PITA,从某种意义上说,生成源在某种意义上更容易。 – 2010-08-02 09:21:45

+0

取决于你需要做什么。字节码生成也可以在运行时完成,它可以用来修改现有的类,所以它生成源文件更强大。 – 2010-08-02 19:56:01

+3

这个问题是关于代码生成的;不编译。 ASM的要求太低了。 – Recurse 2010-08-06 04:49:05

2

我用德鲁伊数据库管理器:http://druid.sourceforge.net/

它从数据库开始,可以进行逆向工程,而且它可以生成基于表和字段的文件,SQL类和文件。

使用的模板语言是速度。

该软件可通过插件系统进行扩展。

0

AtomWeaver http://www.atomweaver.com现在处于公开测试版。这是一个代码生成IDE,可以与当前的IDE一起使用(因此,它不是框架,而是独立的应用程序)。有了它,你可以生成样板代码,但也是一个完整的项目。 AtomWeaver实现了ABSE(基于原子的软件工程),这是一种模型驱动的软件开发形式(与UML或MDA无关)。

它本质上是一个基于模板的系统。

6

http://www.andromda.org

AndroMDA的(发音:仙女座)是一个开放的源代码生成的框架下面的模型驱动架构(MDA)的范例。它从CASE工具获取模型并生成完全可部署的应用程序和其他组件。

我已经使用它,它是非常强大的。它不仅从UML生成配置文件和代码,而仅仅是为开发人员实现开发的业务方法,还通过使用众所周知的dessing模式来维护生成代码。

3

尝试Xtext(http://www.eclipse.org/Xtext/)。您使用XText来定义DSL,XText将生成支持此DSL的Eclipse编辑器。然后你可以使用XP和定义模板来生成所有类型的文本(例如java源代码)。

0

对Velocity模板引擎的另一投票。我已经在多个项目中使用过它,用于生成EJB2.1样板代码,数据库对象等等。它很好用,而且很容易学习。