现在有什么奇特的方式来支持java中的脚本?

时间:2012-01-09 07:19:38

标签: java scripting

我有一个小程序,用户可以在文本区域中输入“真实”java代码片段,然后执行代码以执行一些简单的系统测试。这个程序是在很久以前制作的,现在我很好奇是否有一些新的奇特方法来利用java平台来实现同样的事情(例如让用户在文本区域中输入Groovy,或者可能支持多个脚本语言)。 当我读到java 7在其虚拟机中支持动态类型脚本时,我很好奇。

3 个答案:

答案 0 :(得分:3)

您可以使用Java 6中内置的JavaScript支持:Creating meta language with Java,另请参阅ScriptEngineFactory

Spring框架也有一个Dynamic language support

请注意,JVM 7动态语言支持(通过invokedynamic)在此处无关紧要。它主要针对编译为JVM字节码的动态语言(如JRuby或Groovy)。

答案 1 :(得分:2)

ScriptEngineManager是在java 1.6中引入的。太阳版的旧雅加达BSF项目仍然存在。两者都支持各种脚本语言,包括Groovy。内置的ScriptEngineManager仅支持JavaScript,但我相信您也可以添加Groovy解释器。

答案 2 :(得分:1)

除了在较新版本的Java中添加的脚本支持之外,您还可以选择使用Bean Shell,这些内容甚至可以用于较旧的Java版本(如1.5)。使用Bean Shell即可:

// assuming you have Java code in a string called script, you can do
Object result = new bsh.Interpreter().eval(script);
// now result object will have the result of your Java code contained in string script

Bean Shell是完全兼容Java的脚本引擎,用于评估脚本,Apache,Sun,Bea在其众多产品中使用它。