Introduzione
difficile
Jython è l'implementazione dell'interprete Python sulla virtual machine Java. Per evitare confusione d'ora in avanti chiamerò Python il liguaggio e Jython l'interprete.
Per un'introduzione su Jython vi invio a consultare questa guida.
Qui invece approfondiremo l'argomento dell'integrazione di Jython e Java.
Perchè ?
E' innegabile che uno dei vantaggi che ci dà Python rispetto a Java è una estrema velocità di sviluppo.
Questa velocità può essere sfruttata ad esempio per fare prototipi (da sostituire in seguito in Java) oppure per sviluppare componenti con un alto tasso di manutenzione.
Come? (un primo metodo)
Ci sono fondamentalmente due modi per utilizzare del codice Python in Java:
Il primo modo è quello di utilizzare nel nostro programma Java la classe org.python.util.PythonInterpreter che contiene l'interprete Jython. Questa classe si trova nel file jython.jar e quindi bisogna avere l'accortezza di aggiugerlo alla classpath java.
E' necessario importare le classi necessarie con:
import org.python.util.*; import org.python.core.*;
Nel codice si può quindi creare l'interprete:
PySystemState.initialize(); PythonInterpreter interp = new PythonInterpreter;
Questo ci permette di richiamare del codice Python contenuto in una stringa
interp.exec("print 'hello world'");o in un file:
interp.execfile("helloworld.py");Con questo sistema il codice gira in modo isolato da quello Java e non permette di utilizzare gli oggetti definiti localmente a meno di non "iniettarli" nell'interprete con l'istruzione:
String nomeattributo = "pippo";
interp.set("nomeattributo",nomeattributo);I dati elaborati si possono invece ottenere con:
String s = (String)interp.get("nomeattributo", String.class);Il cast in questo caso è necessario in quanto il metodo restituisce un oggetto di tipo PyObject.