Introduzione
medio
Un linguaggio - tanti interpreti
Il linguaggio Python ha vari interpreti.
Il più noto è CPython. E' scritto in ansi C e portato con successo su svariate architetture (Windows, Linux/Unix, Mac OS X, OS/2, Amiga ecc.).
Esistono però anche altre implementazioni dell'interprete:
Jython che gira sulla macchina virtuale java.
IronPython che gira sul framework .NET
In questo articolo riporterò la mia esperienza con Jython.
Perchè utilizzare Jython
Ci sono due diversi punti di vista:
- per i "pythonisti" (come me) Jython permette di utilizzare e estendere classi scritte in java. E' possibile quindi accedere a svariate librerie di codice java che svolgono delle funzioni che (questo è il mio caso) non sono disponibili altrimenti.
- Per i "Javisti" invece è possibile utilizzare Jython per scrivere codice più snello, leggibile e di facile manutenzione. Questo grazie alle caratteristiche proprie del linguaggio, a questo proposito consiglio di fare riferimento a questo link dove vengono esplorate alcune differenze tra i linguaggi.
Jython attualmente implementa la versione 2.3 di Python (quindi mancano yield, classi nuovo stile e decoratori). Ciò nonostante il porting di codice non è troppo difficoltoso.
Per ottenere buoni risultati è necessaria una discreta conoscenza delle classi Java (oltre che di Python).
Per dimostrare quanto scritto ecco un esempio di codice Java:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyExample
implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Ouch!");
}
public static void main(String[] args) {
JFrame frame = new JFrame("My Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
JButton button = new JButton("Push Me!");
frame.getContentPane().add(button);
ActionListener listener = new MyExample();
button.addActionListener(listener);
frame.setVisible(true);
}
} L'esempio è elementare: si tratta di un frame con un bottone. Se viene premuto il bottone viene stampato "Ouch!"
import javax.swing as swing
def printMessage(event):
print "Ouch!"
if __name__== "__main__":
frame=swing.JFrame(title="My Frame", size=(300,300))
frame.defaultCloseOperation=swing.JFrame.EXIT_ON_CLOSE;
button=swing.JButton("Push Me!", actionPerformed=printMessage)
frame.contentPane.add(button)
frame.visible=1 Il relativo esempio in Python è molto più stringato e leggibile.