我即将开始开发一个小型Java桌面应用程序。该应用程序只是一个引擎,用户可以使用Java类来完成工作(将输入转换为输出)。
我希望用户提供实际的Java类作为可以即时加载(和重新加载)的文件。
对于这种特殊用途,是否有任何理由说Java会比Groovy或Beanshell更麻烦?我不是要求Groovy / Beanshell和Java的比较,因为有很多。相反,我想知道与Java相比,从文件动态加载Groovy或Beanshell类更容易。
对于Java 1.6,JavaCompiler是动态加载代码的最佳方式吗?我想使用所有语言功能,所以我认为Janino已经出局了。还有,重装的任何问题?
答案 0 :(得分:3)
JavaCompiler非常通用,但它需要一个轻微的潜在配置问题:在javax.tools中,ToolProvider.getSystemJavaCompiler()将编译器的类标识为com.sun.tools.javac.api.JavacTool
。在某些平台上,该类不属于JRE; JDK似乎是必需的。这是一个example。
还要考虑javax.script,讨论here。支持多个scripting engines。