Jython - Aplicativo Java
Baixar jython-standalone-2.7.0.jar - Para incorporar Jython em aplicativos Java de sua página oficial de downloads: http://www.jython.org/downloads.html e inclua este arquivo jar na variável de ambiente Java CLASSPATH.
Esta biblioteca contém o PythonInterpreterclasse. Usando o objeto desta classe, qualquer script Python pode ser executado usando oexecfile()método. O PythonInterpreter permite que você faça uso dePyObjectsdiretamente. Todos os objetos conhecidos pelo sistema de tempo de execução Jython são representados por uma instância da classe PyObject ou uma de suas subclasses.
A classe PythonInterpreter tem alguns métodos usados regularmente, que são explicados na tabela abaixo.
Sr. Não. | Método e Descrição |
---|---|
1 | setIn(PyObject) Defina o objeto Python a ser usado para o fluxo de entrada padrão |
2 | setIn(java.io.Reader) Defina um java.io.Reader a ser usado para o fluxo de entrada padrão |
3 | setIn(java.io.InputStream) Defina um java.io.InputStream a ser usado para o fluxo de entrada padrão |
4 | setOut(PyObject) Defina o objeto Python a ser usado para o fluxo de saída padrão |
5 | setOut(java.io.Writer) Defina o java.io.Writer a ser usado para o fluxo de saída padrão |
6 | setOut(java,io.OutputStream) Defina o java.io.OutputStream a ser usado para o fluxo de saída padrão |
7 | setErr(PyObject) Defina um objeto de erro Python a ser usado para o fluxo de erro padrão |
8 | setErr(java.io.Writer Defina um java.io.Writer a ser usado para o fluxo de erro padrão |
9 | setErr(java.io.OutputStream) Defina um java.io.OutputStream a ser usado para o fluxo de erro padrão |
10 | eval(String) Avalie uma string como fonte Python e retorne o resultado |
11 | eval(PyObject) Avalie um objeto de código Python e retorne o resultado |
12 | exec(String) Execute uma string de origem Python no namespace local |
13 | exec(PyObject) Execute um objeto de código Python no namespace local |
14 | execfile(String filename) Execute um arquivo de origem Python no namespace local |
15 | execfile(java.io.InputStream) Execute um fluxo de entrada do código-fonte Python no namespace local |
16 | compile(String) Compile uma string de origem Python como uma expressão ou módulo |
17 | compile(script, filename) Compile um script de origem Python como uma expressão ou módulo |
18 | set(String name, Object value) Defina uma variável do tipo de objeto no namespace local |
19 | set(String name, PyObject value) Defina uma variável do tipo PyObject no namespace local |
20 | get(String) Obtenha o valor de uma variável no namespace local |
21 | get(String name, Class Obtenha o valor de uma variável no namespace local. O valor será retornado como uma instância da classe Java fornecida. |
O seguinte bloco de código é um programa Java com um script Jython integrado “hello.py”.usingexecfile()método do objeto PythonInterpreter. Ele também mostra como uma variável Python pode ser definida ou lida usando os métodos set () e get ().
import org.python.util.PythonInterpreter;
import org.python.core.*;
public class SimpleEmbedded {
public static void main(String []args) throws PyException {
PythonInterpreter interp = new PythonInterpreter();
System.out.println("Hello, world from Java");
interp.execfile("hello.py");
interp.set("a", new PyInteger(42));
interp.exec("print a");
interp.exec("x = 2+2");
PyObject x = interp.get("x");
System.out.println("x: "+x);
System.out.println("Goodbye ");
}
}
Compile e execute o programa Java acima para obter a seguinte saída.
Hello, world from Java
hello world from Python
42
x: 4
Goodbye