Question

Java a un ScriptEngine système qui vous permet d'exécuter et d'évaluer des énoncés dans une langue différente.
Je sais pour un fait que JavaScript est supporté, mais je ne pouvais pas trouver toutes les autres langues de travailler avec elle.
Est, par exemple, Ruby mis en œuvre?

Était-ce utile?

La solution

.. Je sais pour un fait que JavaScript est pris en charge, ..

ECMAScript , techniquement.

.. mais je n'ai pas pu trouver d'autres langues pour travailler avec elle. Est, par exemple, de rubis mis en œuvre?

non.Le moteur Ecmascript est le seul inclus par défaut, la dernière fois que j'ai entendu.

Autres conseils

Voici un script pour déterminer toutes les langues de votre système:

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

}

J'espère que cela aide.

Il y a plusieurs autres langues disponibles.Par exemple, Jython (mise en œuvre Python en Java).Le moyen d'utiliser d'autres langues consiste à ajouter le fichier JAR à ClassPath et à faire une référence au bon nom.

Pour Ruby, il y a Jruby.Voir ce qui suit: https://github.com/jruby/jruby/wiki/javaingration

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

La Java ScriptEngine API fonctionnent avec tous les JSR-223, les Langages de Script.Je n'ai pas trouvé une bien documenté liste complète de ces avant, mais ce post fait un assez bon travail, Où puis-je trouver une liste de JSR-223, les langages de script? Voici une liste de ce poste,

La JSR-223 moteurs de script

  • AWK
  • BeanShell
  • ejs
  • FreeMarker
  • Groovy
  • Jaskell
  • Java
  • JavaScript
  • JavaScript (Navigateur Web)
  • La gelée
  • JEP
  • Jexl
  • jst
  • JudoScript
  • JUEL
  • OGNL
  • Pnuts
  • Python
  • Ruby
  • Régime
  • Le sommeil
  • Tcl
  • Vitesse
  • XPath
  • XSLT

JSR 223 moteurs de scripts ailleurs

  • JavaFX Script
  • ABCL
  • AppleScript
  • Bex script
  • OCaml Script Project
  • PHP
  • PHP (un autre)
  • Python
  • Smalltalk
  • CajuScript
  • MathEclipse

La plupart ont une implémentation spéciale pour que cela fonctionne.Par exemple python seul ne fonctionnera pas, vous avez besoin de la Jython pot ajouté au chemin de classe.De même pour Ruby, vous aurez besoin de JRuby.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top