Jython - Applicazione Java
Scarica jython-standalone-2.7.0.jar - Per incorporare Jython nelle applicazioni Java dalla loro pagina di download ufficiale: http://www.jython.org/downloads.html e includere questo file jar nella variabile d'ambiente Java CLASSPATH.
Questa libreria contiene il file PythonInterpreterclasse. Utilizzando l'oggetto di questa classe, qualsiasi script Python può essere eseguito utilizzando ilexecfile()metodo. PythonInterpreter ti consente di utilizzarePyObjectsdirettamente. Tutti gli oggetti noti al sistema runtime Jython sono rappresentati da un'istanza della classe PyObject o da una delle sue sottoclassi.
La classe PythonInterpreter ha alcuni metodi usati regolarmente, che sono spiegati nella tabella riportata di seguito.
Sr.No. | Metodo e descrizione |
---|---|
1 | setIn(PyObject) Imposta l'oggetto Python da utilizzare per il flusso di input standard |
2 | setIn(java.io.Reader) Imposta un java.io.Reader da utilizzare per il flusso di input standard |
3 | setIn(java.io.InputStream) Imposta un java.io.InputStream da utilizzare per il flusso di input standard |
4 | setOut(PyObject) Imposta l'oggetto Python da utilizzare per il flusso di output standard |
5 | setOut(java.io.Writer) Impostare java.io.Writer da utilizzare per il flusso di output standard |
6 | setOut(java,io.OutputStream) Impostare java.io.OutputStream da utilizzare per il flusso di output standard |
7 | setErr(PyObject) Imposta un oggetto di errore Python da utilizzare per il flusso di errore standard |
8 | setErr(java.io.Writer Imposta un java.io.Writer da utilizzare per il flusso di errore standard |
9 | setErr(java.io.OutputStream) Impostare un java.io.OutputStream da utilizzare per il flusso di errore standard |
10 | eval(String) Valuta una stringa come sorgente Python e restituisci il risultato |
11 | eval(PyObject) Valuta un oggetto codice Python e restituisci il risultato |
12 | exec(String) Esegui una stringa sorgente Python nello spazio dei nomi locale |
13 | exec(PyObject) Esegui un oggetto codice Python nello spazio dei nomi locale |
14 | execfile(String filename) Esegui un file di origine Python nello spazio dei nomi locale |
15 | execfile(java.io.InputStream) Esegui un flusso di input dell'origine Python nello spazio dei nomi locale |
16 | compile(String) Compilare una stringa sorgente Python come espressione o modulo |
17 | compile(script, filename) Compila uno script del sorgente Python come espressione o modulo |
18 | set(String name, Object value) Imposta una variabile di tipo Object nello spazio dei nomi locale |
19 | set(String name, PyObject value) Imposta una variabile di tipo PyObject nello spazio dei nomi locale |
20 | get(String) Ottieni il valore di una variabile nello spazio dei nomi locale |
21 | get(String name, Class
Ottieni il valore di una variabile nello spazio dei nomi locale. Il valore verrà restituito come istanza della classe Java specificata. |
Il seguente blocco di codice è un programma Java con uno script Jython incorporato “hello.py”.usingexecfile()metodo dell'oggetto PythonInterpreter. Mostra anche come una variabile Python può essere impostata o letta usando i metodi 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 ");
}
}
Compilare ed eseguire il programma Java sopra per ottenere il seguente output.
Hello, world from Java
hello world from Python
42
x: 4
Goodbye