gpt4 book ai didi

java - 完整的 Java 元编程框架?

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:35 24 4
gpt4 key购买 nike

我对元编程很感兴趣(即帮助程序员完成繁琐的编程任务的程序)。我正在寻找具有以下属性的工具:

  • 可在编译时和运行时使用;
  • 检查程序结构;
  • 可以添加新的类、方法或字段,并使它们对 Java 编译器可见;
  • 可以改变方法的行为;
  • 基于 Java(好吧,根据某些排名,Java 是最流行的编程语言);
  • 与 IDE 和构建工具(如 Ant、Gradle 或 Maven)良好集成;
  • 积极维护项目;
  • 易于使用和扩展;

有一些解决方案,例如:

  • 反射(reflection)
  • 看点
  • 注释处理工具
  • 字节码操作(CGLIB、Javassist、java.lang.instrument)
  • Eclipse JDT
  • Project Lombok
  • Groovy、JRuby、Scala

但不幸的是,它们都不符合上述所有标准。是否有完整的 Java 元编程解决方案?

最佳答案

JackPot ,它是基于 Java 的,但我认为当前没有引起太多关注。有 AST 和符号表 AFAIK。您可能可以扩展它;我怀疑有人会阻止(或帮助)你。

有用于 Sun,呃,Oracle java 编译器的基于 Java 的编译器 API。它们可能会得到积极维护,但我认为您无法修改源代码并重新生成它。当然有符号表;不知道树。可能很难扩展;您必须跟上编译器人员的步伐,而不是相反。

ANTLR ,它有一个 Java 实现和一个将构建 AST 的 Java 解析器。我认为它没有完整的符号表,因此进行认真的代码分析/修改可能很困难。 ANTLR 肯定得到积极维护,没有人会反对你用符号表增强 Java 语法。只要知道,如果您只做这些,那么 Java 1.6 将花费您大约 6 个月的时间。 (从 1.4 的符号表支持开始,这就是我们内部 [聪明] 人为 DMS 做这件事所花费的时间)。

不是在 Java 中,也不容易集成到 IDE 中,但能够对 Java 代码进行大量分析和转换的是我们的 DMS Software Reengineering Toolkit与其 Java Front End .

DMS 是通用编译器机制:解析、AST 构建、符号表机制、流分析机制,以及源到源转换和 AST 返回合法文本的通用 pretty-print 的额外好处,包括保留注释。它提供了一组支持这些服务的 API,以及用于定义语法和依赖于语言的流分析器的附加工具。

Java 前端为 DMS 提供了关键细节(使用这些 API)以允许它处理 Java:语法/解析器、Java 1.4-1.6(1.7 即将发布)的完整符号表构造,以及一些控制和数据流分析(随着时间的推移会扩展,因为这东西非常有用)。

通过使用 DMS 和 Java 前端提供的服务,可以合理地考虑构建任意 Java 分析和转换工具。 (这使得该工具成为一个“完整的”元编程工具,因为它可以检查任何语言结构,或更改任何语言结构,而不是说模板元编程或反射)。我们相信这比临时工具更有效,因为您不必构建基础设施,所提供的基础设施非常强大,可以处理您没有精力实现的情况,并且它旨在支持此类任务。 YMMV.

DMS/Java 前端已用于构建各种 Java 工具:测试覆盖率、分析器、无用代码消除、大规模克隆检测、带有超链接源代码的 JavaDoc、快速 XML 解析器/生成器等。

是的,它被积极维护;自 1998 年第一个版本以来不断改进。

关于java - 完整的 Java 元编程框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com