Java ScriptEngine支持的语言

15 java built-in scriptengine

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

hjk*_*321 12

这是一个确定系统中所有语言的脚本:

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);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


And*_*son 10

..我知道JavaScript支持的事实,..

ECMAscript,技术上.

..但我找不到任何其他语言来使用它.例如,Ruby实现了吗?

不会.默认情况下,ECMAscript引擎是唯一包含的引擎,这是我上次听到的.

  • 请注意,JavaScript 支持已被弃用,并将随着(我认为)JDK/JVM 第 13 版的发布而消失。 (2认同)
  • 好吧,我是使用 JDK 11 工作的“金丝雀”(我们真的很保守),我们的构建过程使用一些基于 Nashorn 的 JavaScript,运行时会发出“它即将消失”的消息。我想我读到他们从依赖 JavaScript 支持的人那里得到的反馈很少,所以它从路线图中消失了。 (2认同)
  • 从 Java 15 开始,Nashorn 引擎不再是 JDK 的一部分。随着该引擎的弃用,据我所知,JDK 中不再包含脚本引擎。支持引擎SPI,只是内置示例实现不存在。 (2认同)

Aki*_*ira 5

还有其他几种语言。例如,Jython(Java中的Python实现)。使用其他语言的方法是将JAR文件添加到CLASSPATH并引用正确的名称。

对于Ruby,有JRuby。请参阅以下内容:https : //github.com/jruby/jruby/wiki/JavaIntegration

ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ine 5

Java ScriptEngine API 将适用于所有 JSR-223 脚本语言。我之前还没有找到这些文件的完整列表,但这篇文章做得很好, 我在哪里可以找到可用的 JSR-223 脚本语言列表? 这是该帖子中的一个列表,

JSR-223 脚本引擎

  • AWK
  • 豆壳
  • ejs
  • 自由标记
  • 常规
  • 贾斯克尔
  • 爪哇
  • JavaScript
  • JavaScript(网络浏览器)
  • 果冻
  • JEP
  • 杰克斯
  • 刚刚
  • 柔道
  • 尤尔
  • OGNL
  • 坚果
  • Python
  • 红宝石
  • 方案
  • 睡觉
  • TCL
  • 速度
  • XPath
  • XSLT

在别处维护的 JSR 223 脚本引擎

  • JavaFX 脚本
  • ABCL
  • 苹果脚本
  • Bex 脚本
  • OCaml 脚本项目
  • PHP
  • PHP(另一个)
  • Python
  • 短暂聊天
  • CajuScript
  • 数学日食

大多数都有一个特殊的实现来让它工作。例如,单独使用 python 是行不通的,您需要将 Jython jar 添加到类路径中。Ruby 也一样,你需要 JRuby。