Java には、別の言語でステートメントを実行/評価できるScriptEngineシステムがあります。
JavaScript がサポートされていることは知っていますが、JavaScript で動作する他の言語を見つけることができませんでした。
たとえば、Ruby は実装されていますか?
5 に答える
システム上のすべての言語を判別するスクリプトは次のとおりです。
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);
}
}
}
お役に立てれば。
..JavaScript がサポートされていることは知っています..
ECMAscript、技術的に。
..しかし、それで動作する他の言語を見つけることができませんでした。たとえば、Ruby は実装されていますか?
いいえ。ECMAscript エンジンは、私が最後に聞いたとき、デフォルトで含まれている唯一のものです。
アップデート
以下の Pointy のコメントは、Nashorn エンジンが廃止され、「間もなく」削除されることを示唆しています。
ScriptEngine にはありませんが、引き続き BSF を使用できます。Apache Commons Bean Scripting Frameworkのドキュメントはこちらにあります。-
BSF 2.x は現在、いくつかのスクリプト言語をサポートしています。
- Javascript (Mozilla プロジェクトの Rhino ECMAScript を使用)
- NetRexx (Java での IBM REXX スクリプト言語の拡張)
- コモンズJEXL
- Python (Jython を使用)
- Tcl (Jacl を使用)
- XSLT スタイルシート (Apache XML プロジェクトの Xalan および Xerces のコンポーネントとして)
さらに、次の言語が独自の BSF エンジンでサポートされています。
他にもいくつかの言語が利用可能です。たとえば、Jython (Java での Python 実装)。他の言語を使用する方法は、JAR ファイルを CLASSPATH に追加し、正しい名前を参照することです。
RubyにはJRubyがあります。以下を参照してください: https://github.com/jruby/jruby/wiki/JavaIntegration
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");