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?

Foi útil?

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.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top