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?

Author: Andrew Thompson, 2013-11-16

5 answers

..Sei que o JavaScript é suportado..

ECMAscript , tecnicamente.

.. mas não encontrei outras línguas para trabalhar com ele. A Ruby é, por exemplo, implementada?

Não. O motor ECMAscript é o único incluído por padrão, a última vez que ouvi.
 9
Author: Andrew Thompson, 2013-11-16 01:12:54

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.
 8
Author: hjk321, 2016-06-26 13:38:50

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:

Além disso, as seguintes línguas são suportadas pelos seus próprios motores BSF:

 6
Author: Elliott Frisch, 2013-11-16 01:13:11

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/JavaIntegration
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
 4
Author: Akira, 2013-11-16 01:18:09

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
A maioria tem uma implementação especial para que funcione. Por exemplo, python sozinho não vai funcionar você precisa do Jython jar adicionado ao caminho da classe. O mesmo para a Ruby. vais precisar do Jr.
 3
Author: Kyle Bridenstine, 2017-05-23 12:34:35