Domanda

Java ha un ScriptEngine sistema che consente di eseguire/valutare dichiarazioni in una lingua diversa.
So per certo che JavaScript è supportato, ma non sono riuscito a trovare nessun altro linguaggio con cui lavorarci.
Ad esempio, Ruby è implementato?

È stato utile?

Soluzione

.

.. so per certo che JavaScript è supportato, ..

ecmascript , tecnicamente.

.

.. Ma non riuscivo a trovare altre lingue con esso. È, ad esempio, Ruby implementato?

no.Il motore ECMascript è l'unico incluso per impostazione predefinita, l'ultima volta che ho sentito.

Altri suggerimenti

Ecco uno script per determinare tutte le lingue sul tuo sistema:

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

}
.

Spero che questo aiuti.

Ci sono diverse altre lingue disponibili.Ad esempio, Jython (implementazione Python in Java).Il modo in cui utilizzare altre lingue è aggiungendo il file JAR al classpath e effettuare un riferimento al nome giusto.

Per Ruby, c'è Jruby.Vedi quanto segue: https://github.com/jruby/jruby/wiki/javaintegration

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

L'API Java ScriptEngine funzionerà con tutti i linguaggi di scripting JSR-223.Non ho trovato prima un elenco completo e ben documentato di questi, ma questo post fa un ottimo lavoro,Dove posso trovare un elenco dei linguaggi di scripting JSR-223 disponibili?Ecco un elenco da quel post,

Motori di script JSR-223

  • AWK
  • BeanShell
  • ej
  • FreeMarker
  • Fantastico
  • Jaskell
  • Giava
  • JavaScript
  • JavaScript (browser Web)
  • Gelatina
  • JEP
  • Jexl
  • jst
  • JudoScript
  • JUEL
  • OGNL
  • Noccioline
  • Pitone
  • Rubino
  • schema
  • Sonno
  • Tcl
  • Velocità
  • XPath
  • XSLT

Motori di script JSR 223 mantenuti altrove

  • Script JavaFX
  • ABCL
  • AppleScript
  • Scrittura Bex
  • Progetto di scripting OCaml
  • PHP
  • PHP (un altro)
  • Pitone
  • Chiacchiere
  • CajuScript
  • MatematicaEclipse

La maggior parte ha un'implementazione speciale affinché funzioni.Ad esempio, Python da solo non funzionerà, è necessario aggiungere il jar Jython al percorso della classe.Lo stesso per Ruby avrai bisogno di JRuby.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top