2

我需要在运行时在 java 中编译一些代码。我查了这个,它看起来像这样做的方法。到目前为止一切顺利,但我需要在每个平台上运行最终程序。因此,如果只有 aj r e的系统,我就会遇到麻烦。

现在我考虑将编译器作为java lib。但我也不确定将 tools.jar 从 java jdk 复制到我的项目中的解决方案。这是一种有效的方法,还是有其他解决方案或者我可以使用的库?

我需要这个,因为我想将脚本翻译成 java 代码并执行它。

谢谢!

- 编辑 -

为什么我需要这个?

用户应该对我的程序某些部分的行为产生影响。所以有一种类似于小脚本语言的东西。由于性能原因,我认为将其转换为 java 源代码然后转换为字节码并使用它是最好的解决方案。此脚本不会经常更改,并且仅在程序的主要部分运行之前更改。如果有更好的选择,我也很乐意了解它们。

如果有任何问题,或者如果您需要有关具体细节的更多信息,请询问。

4

1 回答 1

1

我能想到的最好的建议是 Janino:http ://docs.codehaus.org/display/JANINO/Home 。不幸的是,编译器似乎还没有完全支持 Java 5(基于主页上的内容),所以您可能需要解决一些问题。


我认为你最好的选择是咬紧牙关,让 JDK 成为先决条件。安装 JRE 应该不会比安装 JDK 困难得多,而且向人们解释他们不需要进行 Java 开发很容易。

还有其他替代方法可以避免该问题:

  • 无需生成 Java 源代码,而是直接编译为字节码。(不是我建议这样做......)

  • 将您的 DSL 编译为您可以为其编写解释器的内部形式。


由于性能原因,我认为将其转换为 java 源代码然后转换为字节码并使用它是最好的解决方案。

对我来说,这听起来像是“过早的优化”。

于 2014-12-04T22:45:56.463 回答