20

Java には、別の言語でステートメントを実行/評価できるScriptEngineシステムがあります。
JavaScript がサポートされていることは知っていますが、JavaScript で動作する他の言語を見つけることができませんでした。
たとえば、Ruby は実装されていますか?

4

5 に答える 5

16

システム上のすべての言語を判別するスクリプトは次のとおりです。

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

}

お役に立てれば。

于 2016-06-26T13:38:50.777 に答える
12

..JavaScript がサポートされていることは知っています..

ECMAscript、技術的に。

..しかし、それで動作する他の言語を見つけることができませんでした。たとえば、Ruby は実装されていますか?

いいえ。ECMAscript エンジンは、私が最後に聞いたとき、デフォルトで含まれている唯一のものです。

アップデート

以下の Pointy のコメントは、Nashorn エンジンが廃止され、「間もなく」削除されることを示唆しています。

于 2013-11-16T01:12:54.017 に答える
5

他にもいくつかの言語が利用可能です。たとえば、Jython (Java での Python 実装)。他の言語を使用する方法は、JAR ファイルを CLASSPATH に追加し、正しい名前を参照することです。

RubyにはJRubyがあります。以下を参照してください: https://github.com/jruby/jruby/wiki/JavaIntegration

ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
于 2013-11-16T01:18:09.733 に答える