Java ScriptEngine langues prises en charge
-
21-12-2019 - |
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?
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.
pas dans scriptengine, mais vous pouvez toujours utiliser BSF. Du Cadre de script de haricot Apache Commons , vous pouvez trouver la documentation ici . -
BSF 2.x prend en charge plusieurs langues de script actuellement:
- JavaScript (Utilisation de Rhino Ecmascript, du projet Mozilla)
- NetRexx (extension de la langue de script IBM REXX en Java)
- Commons JEXL
- python (en utilisant Jython)
- TCL (à l'aide de JACL)
- feuilles de style XSLT (en tant que composant de l'Apache XML Project XALAN et XERCES)
De plus, les langues suivantes sont prises en charge avec leurs propres moteurs BSF:
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.