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

现在有什么奇特的方式来支持java脚本?,java,scripting,Java,Scripting,我有一个小程序,用户可以在文本区域中输入一段“真实”java代码,然后执行代码以执行一些简单的系统测试。这个程序是很久以前编写的,现在我很好奇是否有一些新的奇特方法可以利用java平台来实现同样的目标(例如,让用户在文本区域输入Groovy,或者可能支持几种脚本语言)。 当我读到java 7在其虚拟机中支持动态类型脚本时,我感到很好奇。ScriptEngineManager是在java 1.6中引入的。现在仍然存在的是《太阳报》版本的雅加达BSF项目。两者都支持各种脚本语言,包括Groovy。内

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

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

您可以使用Java 6:内置的JavaScript支持,另请参见

Spring框架也有一个新的框架


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

除了在较新版本的Java中添加的脚本支持之外,您还可以选择使用,甚至可以在较旧的Java版本(如1.5)中使用。使用
BeanShell
您只需执行以下操作:

// 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

BeanShell
是一个与Java完全兼容的脚本引擎,用于评估脚本,Apache、Sun和Bea在其许多产品中都使用了它。

请注意,并非所有Java 6 JVM都附带JavaScript—只是遇到了一个IBM没有。