Bookmark and Share
Document Actions

Introduzione
medio

Il linguaggio di programmazione Python ha vari interpreti, Jython è una versione di Python completamente scritta in Java. Perchè utilizzarlo?

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.

 
by Maurizio Lupo last modified 2009-01-21 18:35