gpt4 book ai didi

java - 构建 Java 语言的扩展 - 步骤?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:17 24 4
gpt4 key购买 nike

我想知道构建某种 Java 扩展或插件所需的一般步骤是什么。更具体地说,我希望在 java 中构建类似于 C++ 结构的东西,它允许我声明来自特定类的方法,以便我可以指示它们应由 JVM 执行的顺序。目前这只是空中楼阁,我感兴趣的是 AspectJ 或其他 Java 扩展之类的东西如何工作以允许您声明非 Java 原生的语法。我假设这需要某种编译器插件。

举个例子,我设想如下所示

public struct weakProfile {
streamDataViaGprs();
sendSimpleMap();
}

public struct strongProfile {
streamDataVia3G();
sendComplexMap();
sendAudio();
}

在上面的示例中,如果我有一个 Web 服务并且客户端配置文件较弱,这意味着他们用来调用该服务的设备处理能力低且带宽能力差,那么我只想提供 streamDataViaGprs()sendSimpleMap() 功能。但是,如果客户端设备具有强大的处理能力和出色的带宽连接,那么我想使用 streamDataVia3G()sendComplexMap()sendAudio()。这是我的最终目标,但是我不确定开发上述结构会涉及什么,更不用说它是否可能了。

最佳答案

没有编译器插件 API。您至少可以做四件事:

1) 为您的新语言编写您自己的编译器,它将您的代码翻译成 Java 代码,然后将其提供给 Java 编译器(过去很流行,现在很少使用)。您的“编译器”实际上可能只是进行简单的文本转换,将大部分代码原封不动地传递过去,因此如果您的更改很小并且是局部的,这是一种合理的处理方式。

2) 为您的新语言编写您自己的编译器,它会发出 Java .class 文件(现在很常见:Groovy、Scala、Clojure 都以这种方式工作。)

3) 使用“字节码工程库”获取已编译的 .class 文件,分析它们,修改它们,然后将它们写回磁盘或动态加载并执行它们(这是 AspectJ 和大多数分析器所做的事情) .)

4) 获取 Sun^H^H^HOracle 的实际 Java 编译器的源代码——它在 OpenJDK 中可用——并修改它。这是硬核,可能不是最好的计划。

当然,您选择哪条道路取决于您的技能和要求。

关于java - 构建 Java 语言的扩展 - 步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284047/

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