Lingue supportate da Java ScriptEngine
-
21-12-2019 - |
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?
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.
Non in ScriptEngine, ma è ancora possibile utilizzare BSF. Dal Apache Commons Fagiolo Scripting framework , puoi trovare la documentazione qui . -
BSF 2.x supporta diversi linguaggi di scripting Attualmente:
- .
- JavaScript (usando Rhino Ecmascript, dal progetto Mozilla)
- Netrexx (un'estensione del linguaggio di scripting IBM Rexx in Java)
- Commons Jexl
- Python (usando Jython)
- TCL (usando jacl)
- XSLT Stylesheets (come componente di Xalan e Xalan del progetto Apache XML)
Inoltre, le seguenti lingue sono supportate con i propri motori BSF:
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.