Linguagens suportadas por ScriptEngine Java
Java tem um sistema ScriptEngine que lhe permite executar / avaliar declarações numa linguagem diferente.
Eu sei por um fato que JavaScript é suportado, mas eu não consegui encontrar quaisquer outros idiomas para trabalhar com ele.
A Ruby é, por exemplo, implementada?
5 answers
..Sei que o JavaScript é suportado..
ECMAscript , tecnicamente.
Não. O motor ECMAscript é o único incluído por padrão, a última vez que ouvi... mas não encontrei outras línguas para trabalhar com ele. A Ruby é, por exemplo, implementada?
Aqui está um script para determinar todas as línguas no seu 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);
}
}
}
Espero que isto ajude.
Não em ScriptEngine, mas ainda pode usar BSF. Do Apache Commons Bean Scripting Framework , você pode encontrar a documentação aqui . -
BSF 2.o x suporta várias linguagens de programação actualmente:
- Javascript (usando o Rhino ECMAScript, do projeto Mozilla))
- NetRexx (uma extensão da linguagem de scripts do IBM REXX em Java))
- Commons JEXL
- Python (usando Jython)
- Tcl (usando o Jacl)
- Folhas de estilo XSLT (como um componente do projeto XML do Apache Xalan e Xerces)
Além disso, as seguintes línguas são suportadas pelos seus próprios motores BSF:
Existem várias outras línguas disponíveis. Por exemplo, Jython (Python implementation in Java). A maneira de usar outras línguas é adicionando o arquivo JAR ao CLASSPATH e fazendo uma referência ao nome certo.
Para a Ruby, há o Jr. Ver o seguinte: https://github.com/jruby/jruby/wiki/JavaIntegrationScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
A API Java ScriptEngine funcionará com todas as linguagens JSR-223 de Scripting. Eu não encontrei uma lista completa bem documentada destes antes, mas este post faz um bom trabalho, Onde posso encontrar uma lista de linguagens de programação JSR-223 disponíveis? Aqui está uma lista desse post,
Motores JSR-223 script
- AWK
- BeanShell
- ejs
- FreeMarker
- Groovy
- Jaskell
- Java
- JavaScript
- JavaScript (Navegador Web)
- geleia
- JEP
- Jexl
- jst
- JudoScript
- JUEL
- OGNL
- nozes
- Python
- Ruby
- regime
- dormir
- Tcl
- Velocidade
- XPath
- XSLT
Motores de escrita JSR 223 mantidos noutro local
- Script JavaFX
- ABCL
- AppleScript
- Bex script
- OCaml Scripting Project
- PHP
- PHP (outro um)
- Python
- Smalltalk
- CajuScript
- MathEclipse