Поддерживаемые языки Java ScriptEngine

Java имеет ScriptEngine систему, которая позволяет запускать/оценивать заявления на другом языке.
Я знаю, что JavaScript поддерживается, но я не мог найти никаких других языков для работы с ним. Реализовано ли, например, Ruby?

Ответ 1

.. Я знаю, что поддерживается JavaScript,..

ECMAscript, технически.

.. но я не мог найти никаких других языков для работы с ним. Реализовано ли, например, Ruby?

Нет. Двигатель ECMAscript является единственным, включенным по умолчанию, в последний раз, когда я слышал.

Ответ 2

Не в ScriptEngine, но вы все равно можете использовать BSF. Из Apache Commons Bean Scripting Framework вы можете найти его Documentation здесь. -

BSF 2.x поддерживает в настоящее время несколько языков сценариев:

Кроме того, поддерживаются следующие языки со своими собственными двигателями BSF:

Ответ 3

Вот script, чтобы определить все языки в вашей системе:

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

}

Надеюсь, что это поможет.

Ответ 4

Доступно несколько других языков. Например, Jython (реализация Python в Java). Способ использования других языков заключается в добавлении JAR файла в CLASSPATH и создании ссылки на правильное имя.

Для Ruby существует JRuby. См. Следующее: https://github.com/jruby/jruby/wiki/JavaIntegration

ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");

Ответ 5

API Java ScriptEngine будет работать со всеми языками Scripting Languages ​​JSR-223. Я не нашел хорошо документированный полный список из них раньше, но этот пост выполняет довольно хорошую работу, Где я могу найти список доступных языков сценариев JSR-223? Вот список из этого сообщения,

Двигатели JSR-223 script

  • AWK
  • BeanShell
  • EJS
  • FreeMarker
  • Groovy
  • Jaskell
  • Java
  • JavaScript
  • JavaScript (веб-браузер)
  • Желе
  • СЭП
  • Jexl
  • Jst
  • JudoScript
  • Juel
  • OGNL
  • Pnuts
  • Python
  • рубин
  • Схема
  • Sleep
  • Tcl
  • скорость
  • XPath
  • XSLT

JSR 223 script двигатели, поддерживаемые в других местах

  • JavaFX Script
  • ABCL
  • AppleScript
  • Bex Script
  • Проект сценариев OCaml
  • PHP
  • PHP (другой)
  • Python
  • Smalltalk
  • CajuScript
  • MathEclipse

Большинство из них имеют специальную реализацию, чтобы работать. Например, только один python не будет работать, вам нужно добавить jaron jar в путь класса. Для Ruby вам понадобится JRuby.