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, Classjavaclass

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