【问题标题】:Java - Dynamic Compilation without JDKJava - 没有 JDK 的动态编译
【发布时间】:2011-03-10 00:06:12
【问题描述】:

我知道 j2se 6 引入了 JavaCompiler API;但是,使用起来很麻烦,并且需要 JDK 而不是 JRE。

是否可以在没有 JDK 的情况下进行动态编译? (我对全内存编译非常感兴趣。)

此外,我希望性能接近原始 java 代码,所以我不想使用像 BeanShell 或 Groovy 这样的脚本语言。

谢谢。

【问题讨论】:

  • 您是否对任何脚本语言进行了基准测试?你怎么知道它们是否不够快?
  • BeanShell 和 Groovy 完全不同。 Groovy 编译成常规的 Java 类文件。
  • 这是关于它编译成字节码的事实令人困惑的部分。我已经看到许多将 groovy 与原始 java 进行比较的基准测试,结果差异很大(尽管它们并不准确,但速度确实非常明显)。我目前正在使用 beanshell,它在实践中非常慢。所以我正在寻求更好的解决方案。

标签: compilation java dynamic-compilation


【解决方案1】:

您可能对Janino 感兴趣,尤其是SimpleCompiler。对于内存编译,您可以使用Reader constructorStringReader

【讨论】:

  • +1 真的很方便。我仍然不知道为什么 groovy 更慢。
  • 只是一个猜测,但 Groovy 可能会因在运行时进行类型检查而受到阻碍(动态类型的成本)。编译为字节码可以更快地单步执行代码行(不再是“行”),但仍然需要进行类型检查。
猜你喜欢
  • 2017-03-05
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多