【问题标题】:Java code generation [closed]Java代码生成[关闭]
【发布时间】:2011-03-24 01:33:52
【问题描述】:

Java 代码生成的主要框架有哪些?

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

有人知道一个好的框架吗?

谢谢。

【问题讨论】:

  • 您是在尝试做一些具体的事情,还是这只是收获另一个框架列表的一种方式?
  • @Brent 您提供的链接似乎反对代码生成(由于其标题),但实际上是一种讨论,反对它的论点数量是与赞成的大致相同
  • IMO,APT最大的问题是缺乏生成代码的好方法。
  • 我正在寻找基于模板的生成工具。

标签: java code-generation


【解决方案1】:

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

jet/velocity 正在使用模板。

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

【讨论】:

  • cglib 被 JUnit/EasyMock 使用,所以可能已经包含在 users 项目中
【解决方案2】:

请注意,这些实用程序主要用于通过生成样板代码来启动您的项目。

【讨论】:

    【解决方案3】:

    http://www.andromda.org

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

    我用过它,它非常强大。它不仅从 UML 生成配置文件和代码,只留给开发人员开发业务方法的实现,而且通过使用众所周知的设计模式来维护生成的代码。

    【讨论】:

      【解决方案4】:

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

      除此之外,如果您对模型驱动开发 (MDD) 感兴趣,您可以使用 [AndroMDA] 或 [Borland's Together] ,最好的基于 [eclipse] 的工具之一。

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

      其他支持代码生成的 java 开发工具有 [Lombok] 和 [Spoon]。 Project Lombok 提供了自动生成默认 getter/setter 方法、自动资源管理(使用 @Cleanup 注解)和注解驱动的异常处理等功能。

      [cglib]、[Velocity 模板] 和 [AppFuse] 也很棒。

      【讨论】:

      • [为什么] 你会在 [things] 周围加上 [brackets] 吗? :)
      【解决方案5】:

      试试 Xtext (http://www.eclipse.org/Xtext/)。您使用 XText 定义一个 DSL,XText 将生成一个支持该 DSL 的 Eclipse 编辑器。然后您可以使用 XPand 定义模板来生成各种文本(例如 java 源代码)。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          我使用了 Druid 数据库管理器:http://druid.sourceforge.net/

          从db开始,可以逆向工程,可以根据表和字段生成文档、sql、类和文件。

          使用的模板语言是velocity。

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

          【讨论】:

            【解决方案8】:

            AtomWeaver http://www.atomweaver.com 现在处于公开测试阶段。它是一个代码生成 IDE,可以与您当前的 IDE 一起使用(因此,它不是框架,而是一个独立的应用程序)。有了它,你可以生成样板代码,也可以生成一个完整的项目。

            AtomWeaver 实现了 ABSE(基于 Atom 的软件工程),这是一种模型驱动的软件开发形式(与 UML 或 MDA 无关)。

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

            【讨论】:

              【解决方案9】:

              对 Velocity 模板引擎的又一票。我在多个项目中使用过它,用于生成 EJB2.1 样板代码、数据库对象等。效果很好,也很容易学习。

              【讨论】:

                【解决方案10】:

                我认为ASM 是最流行的Java 字节码生成库。它是目前最底层的字节码库,但还有其他基于 ASM 构建的更高级代码生成库,虽然直接使用 ASM 也不是太难(直接使用的一个好处是 ASM 的 JAR 大小非常小的)。 http://asm.ow2.org/users.html

                提到了一些 ASM 的用户

                编辑:

                对于提到用例的更新问题(“我有一个类的骨架,我需要为不同的用例使用不同的动态部分生成它。”),我的答案是改进设计,以便删除所有代码重复并且不需要生成代码。阅读不同的设计模式可以提供一些关于如何做到这一点的想法。要获得更具体的答案,您需要展示一些代码并更具体地说明您的需求。

                【讨论】:

                • 但是从易于编程的角度来看,它是一个 PITA 并且生成源在某种意义上更容易。
                • 取决于你需要做什么。字节码生成也可以在运行时完成,可以用来修改已有的类,比生成源文件更强大。
                • 问题是关于代码生成的;不是编译。 ASM 对于所要求的内容来说太低了。
                • 字节码也是代码。生成字节码不是编译,因为编译意味着将高级语言转换为另一种语言 (dictionary.reference.com/browse/compiling) - 当没有正在转换的源语言时,它不会编译。
                猜你喜欢
                • 2012-09-03
                • 2012-11-27
                • 2012-12-02
                • 1970-01-01
                • 2012-10-30
                • 2011-10-23
                • 2017-09-25
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多