Java ScriptEngine支持的语言

时间:2013-11-16 01:02:48

标签: java built-in scriptengine

Java有一个ScriptEngine系统,允许您以不同的语言运行/评估语句 我知道JavaScript支持的事实,但我找不到任何其他语言来使用它 例如,Ruby实现了吗?

5 个答案:

答案 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脚本引擎

  • AWK
  • BeanShell的
  • EJS
  • FreeMarker的
  • Groovy的
  • Jaskell
  • 爪哇
  • 的JavaScript
  • JavaScript(网络浏览器)
  • 果冻
  • JEP
  • JEXL
  • JS​​T
  • JudoScript
  • JUEL
  • OGNL
  • PNUTS
  • 的Python
  • 红宝石
  • 方案
  • 睡眠
  • 的Tcl
  • 速度
  • 的XPath
  • XSLT

在其他地方维护的JSR 223脚本引擎

  • JavaFX Script
  • ABCL
  • 的AppleScript
  • Bex脚本
  • OCaml脚本项目
  • PHP
  • PHP(另一个)
  • 的Python
  • Smalltalk中
  • CajuScript
  • MathEclipse

大多数都有一个特殊的实现工作。例如,单独的python不起作用你需要将Jython jar添加到类路径中。对于Ruby来说,你需要JRuby。