【问题标题】:Dynamic Java Compilation: BeanShell, Janino, JavaCompiler?动态 Java 编译:BeanShell、Janino、JavaCompiler?
【发布时间】:2010-12-30 00:12:51
【问题描述】:

我即将开始开发一个小型 Java 桌面应用程序。该应用程序只是一个引擎,用户为其提供 Java 类来完成工作(将输入转换为输出)。

我希望用户提供实际的 Java 类作为可以动态加载(和重新加载)的文件。

对于这种特殊用途,有什么理由说明 Java 比 Groovy 或 Beanshell 更笨重?我不是要求比较 Groovy/Beanshell 和 Java,因为有很多。相反,我想知道与 Java 相比,从文件中动态加载 Groovy 或 Beanshell 类是否更容易

对于 Java 1.6,JavaCompiler 是动态加载代码的最佳方式吗?我想使用所有语言功能,所以我认为 Janino 已经出局了。还有,重载有什么问题吗?

注意:我见过thisthis,但我不确定他们是否回答了我的问题。

【问题讨论】:

    标签: java compilation dynamic-compilation janino


    【解决方案1】:

    JavaCompiler 非常通用,但它会带来一个小的潜在配置问题:在javax.tools 中,ToolProvider.getSystemJavaCompiler() 将编译器的类标识为com.sun.tools.javac.api.JavacTool。在某些平台上,该类不是 JRE 的一部分;似乎需要 JDK。这是example

    同时考虑javax.script,讨论here。支持多个scripting engines

    【讨论】:

    • 谢谢。有什么理由更喜欢 Rhino 之类的东西而不是当前的“热门”语言之一(主要是 Groovy)?
    • 我猜这取决于用户的偏好。如果您以符合 javax.script 的实现为目标,则可以允许您的用户从支持的语言列表中进行选择。
    • 好点。谢谢,还在考虑中,我也会检查脚本引擎。
    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2013-10-10
    • 2015-12-28
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多