Linguagens suportadas pelo Java ScriptEngine
-
21-12-2019 - |
Pergunta
Java tem um Script Engine sistema que permite executar/avaliar instruções em um idioma diferente.
Eu sei que JavaScript é compatível, mas não consegui encontrar nenhuma outra linguagem para trabalhar com ele.
Por exemplo, Ruby está implementado?
Solução
... Eu sei que um fato que JavaScript é suportado, ..
ecmascript , tecnicamente.
... mas não consegui encontrar outras línguas para trabalhar com ele. É, por exemplo, Ruby implementado?
não.O mecanismo ecmascript é o único incluído por padrão, a última vez que ouvi.
Outras dicas
Aqui está um script para determinar todos os idiomas do 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 na scripttenhaine, mas você ainda pode usar o BSF. Do Apache Commons Bean Scripting Framework , você pode encontrar sua documentação Aqui . -
BSF 2.x suporta vários idiomas de scripts atualmente:
- javascript (usando rinoceronte ecmascript, do projeto Mozilla)
- netrexx (uma extensão do IBM REXX scripting linguagem em java)
- Commons Jexl
- python (usando jython)
- tcl (usando o JACL)
- XSLT Stylesheets (como um componente do Xalan e Xerces do Projeto Apache XML)
Além disso, os seguintes idiomas são suportados com seus próprios motores BSF:
Existem vários outros idiomas disponíveis.Por exemplo, Jython (implementação Python em Java).A maneira de usar outras linguagens é adicionar o arquivo JAR ao CLASSPATH e fazer uma referência ao nome correto.
Para Ruby, existe o JRuby.Veja o seguinte: https://github.com/jruby/jruby/wiki/JavaIntegration
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
A API Java ScriptEngine funcionará com todas as linguagens de script JSR-223.Não encontrei uma lista completa bem documentada deles antes, mas esta postagem faz um bom trabalho,Onde posso encontrar uma lista de linguagens de script JSR-223 disponíveis?Aqui está uma lista dessa postagem,
Mecanismos de script JSR-223
- AWK
- BeanShell
- ejs
- Marcador Grátis
- Legal
- Jaskell
- Java
- JavaScript
- JavaScript (navegador da Web)
- Geléia
- PEC
- Jexl
- apenas
- JudôScript
- JUEL
- OGNL
- Nozes
- Pitão
- Rubi
- Esquema
- Dormir
- Tcl
- Velocidade
- XPath
- XSLT
Mecanismos de script JSR 223 mantidos em outro lugar
- Script JavaFX
- ABCL
- AppleScript
- Roteiro Bex
- Projeto de script OCaml
- PHP
- PHP (outro)
- Pitão
- Conversa fiada
- CajuScript
- Eclipse Matemático
A maioria tem uma implementação especial para funcionar.Por exemplo, python sozinho não funcionará, você precisa do jar Jython adicionado ao caminho de classe.O mesmo para Ruby, você precisará do JRuby.