Java有一个ScriptEngine系统,允许您以不同的语言运行/评估语句 我知道JavaScript支持的事实,但我找不到任何其他语言来使用它 例如,Ruby实现了吗?
答案 0 :(得分:11)
以下是确定系统中所有语言的脚本:
import java.util.List;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngineFactory;
public class Test {
public static void main(String[] args)
{
ScriptEngineManager mgr = new ScriptEngineManager();
List<ScriptEngineFactory> factories = mgr.getEngineFactories();
for (ScriptEngineFactory factory : factories)
{
System.out.println("ScriptEngineFactory Info");
String engName = factory.getEngineName();
String engVersion = factory.getEngineVersion();
String langName = factory.getLanguageName();
String langVersion = factory.getLanguageVersion();
System.out.printf("\tScript Engine: %s (%s)\n", engName, engVersion);
List<String> engNames = factory.getNames();
for (String name : engNames)
{
System.out.printf("\tEngine Alias: %s\n", name);
}
System.out.printf("\tLanguage: %s (%s)\n", langName, langVersion);
}
}
}
希望这有帮助。
答案 1 :(得分:9)
..我知道支持JavaScript的事实,..
ECMAscript,技术上。
..但我找不到任何其他语言可以使用它。 例如,Ruby实现了吗?
没有。 ECMAscript引擎是默认包含的唯一引擎,这是我上次听到的。
答案 2 :(得分:6)
不在ScriptEngine中,但您仍然可以使用BSF。从Apache Commons Bean Scripting Framework,您可以找到它的文档here。 -
BSF 2.x目前支持多种脚本语言:
此外,他们自己的BSF引擎支持以下语言:
答案 3 :(得分:4)
还有其他几种语言可供选择。例如,Jython(Java中的Python实现)。使用其他语言的方法是将JAR文件添加到CLASSPATH并引用正确的名称。
对于Ruby,有JRuby。请参阅以下内容:https://github.com/jruby/jruby/wiki/JavaIntegration
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
答案 4 :(得分:3)
Java ScriptEngine API适用于所有JSR-223脚本语言。我以前没有找到一份记录良好的完整清单,但这篇文章做得很好, Where can I find a list of available JSR-223 scripting languages? 这是该帖子的一个列表,
JSR-223脚本引擎
在其他地方维护的JSR 223脚本引擎
大多数都有一个特殊的实现工作。例如,单独的python不起作用你需要将Jython jar添加到类路径中。对于Ruby来说,你需要JRuby。