A biblioteca Jython implementa as especificações da API Java Scripting (JSR-223) e por isso, permite compilar código python para execução futura. Para isso, a implementação da interface javax.script.ScriptEngine fornecida pela Jython também implementa a interface javax.script.Compilable que fornece dois métodos para compilar o código fonte python que são:
public CompiledScript compile(String script) throws ScriptException;
public CompiledScript compile(Reader script) throws ScriptException;
Esses dois métodos permite compilar um código fonte em forma de java.lang.String ou java.io.Reader e com isso, retorna-se um objeto da classe abstrata javax.script.CompiledScript que permite fazer as chamadas aos métodos para executar o código compilado fonte como os seguintes métodos:
public Object eval() throws ScriptException
public Object eval(Bindings bindings) throws ScriptException
public abstract Object eval(ScriptContext context) throws ScriptException
Abaixo temos um código exemplo de como funciona a compilação de código fonte Python no Java.
---------------------------------------------------------------------------------------
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class PythonCompileTest {
/**
* @param args
*/
public static void main(String[] args) {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager
.getEngineByName("python");
if (scriptEngine != null) {
if (scriptEngine instanceof Compilable) {
Compilable compilable = (Compilable) scriptEngine;
CompiledScript compiledScript = null;
try {
compiledScript = compilable
.compile("a = [] \nprint 'oi jython!!!'");
} catch (ScriptException e) {
e.printStackTrace();
}
if (compiledScript != null) {
try {
compiledScript.eval();
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
}
System.out.println("Terminado com sucesso!!");
}
}
---------------------------------------------------------------------------------------
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário