Ich werde diese Einführung mit einem komplexeren GUI-Programm beenden. Wenn Sie dieses einfache auf AWT basiernde Programm betrachten, sehen Sie, dass Jython aus dem Java Code aufgerufen werden kann und alle Eigenschaften von Java erreichen kann. Die Java-Klassen werden nahtlos in Jython Code integriert.
Zuerst erstellen Sie ein GUI als Subklasse von AWT Klasse Panel und nennen Sie das Programm Scribble. Später werden Sie auch ein Frame erstellen, in dem Panel angezeigt wird.
from java.awt import BorderLayout as BL, Color, Button, Panel
class Scribble(Panel):
""" A simple GUI example """
def __init__ (self): # constructor
Panel.__init__(self, BL())
self.add(Button('Clear', actionPerformed=self.doClear),
BL.SOUTH)
self.mouseDragged = self.doDrag
self.mousePressed = self.doPress
self.__last = 0, 0
def doClear (self, event):
""" clear background """
g = self.graphics
g.color = self.background
g.fillRect(0, 0, self.size.width, self.size.height)
def doDrag (self, event):
""" draw line from last to here """
g = self.graphics
g.color = Color.black
lx, ly = self.__last
x = event.x; y = event.y
g.drawLine(lx, ly, x, y) # draw new line segment
self.__last = x, y # save coordinates
def doPress (self, event):
""" save click point """
self.__last = event.x, event.y
if __name__ == "__main__":
def doClose (event):
import sys
sys.exit()
from java.awt import Frame
frame = Frame("Scribble", windowClosing=doClose)
frame.add( Scribble() )
frame.size = 400, 300
frame.visible = 1
Als erstes werden Sie merken, dass es möglich ist, mehrere Anweisungen in einer Zeile getrennt durch Semikolon zu setzen. Andererseits kann eine Anweisung auf mehrere Zeilen verteilt werden und zwar mit einem Komma. Die import-Anweisung holt mehrere Klassen auf einmal und kann diese optional mit einem neuen Namen versehen. Die import-Anweisung ist ausführbar, d.h. sie kann überall dort eingesetzt werden, wo sie gerade benötigt wird. Dadurch wird das Importieren von unnötigen Bibliotheken reduziert. Es gibt die Möglichkeit, verschachtelte Funktionen zu definieren wie doClose(). Darüberhinaus wird es auf die Variablendeklarationen und einen Operator für die Klasseninstantierung verzichtet.
Die Klassenvariable self.__last ist eine private Variable, da sie mit dem doppelten Unterstrich beginnt. Die Variable speichert die vorherige Mausposition. Jedes Mal wenn das Event "Ziehen" (drag) eintritt, wird eine schwarze Linie zwischen der gespeicherten Mausposition und der Position, an dem der Event eingetreten ist, gezeichnet.
Schauen Sie auch, wie die Event Handler definiert sind. Es gibt kein Listener Interface. Statt dessen werden die Eigenschaften für die entsprechenden Handler der Superklasse (z. B. actionPerformed) in den Jython Funktionen definiert. Intereassnt ist, dass beliebige JavaBeans Eigenschaften von Java Objekten (z. B. Graphics Objekt g) können direkt als Jython Eigenschaften genutzt werden, ohne get/set Methoden zu verwenden. Das vereinfacht die Programmierung erheblich, obwohl Sie nach wie vor die get/set Methoden nutzen können, wenn Sie möchten.
Das Beipiel zeigt das Scribble GUI

Sean McGrath, technischer Direktor von Prophylon und ein Autor, sagte, dass Jython eins der "phantastischten Java Tools" ohne der finanziellen Unterstützung im Rücken ist. Er nannte es auch "die unwiederstehliche Waffe, die Java Platform für ihr Überleben im 21. Jahrhundert gesichert hatte."
Jython ist ein extrem mächtiges Entwicklungstool sowie in Python als auch in Java. Es erlaubt Ihnen Java Klassen in Python Code zu nutzen und steigert dadurch die Effektivität von Python. Und es erlaubt Ihnen Python Code innerhalb von Java Programmen mit Hilfe von Methoden exec() und execfile() auszuführen. Mit Jython können Sie Java Klassen ableiten. Jython kann den für die Erstellung einer Applikation Programmieraufwand erheblich reduzieren. Nicht zu vergessen sind Servlets, Beans und Applets, die auch in Jython geschrieben werden können.
Natürlich deckt dieses Artikel nur die Spitze des Eisbergs. Es gibt noch vieles anderes zum Thema Jython, aber es würde einen um längen größeren Artikel benötigen, um mehr Themen abzudecken. Jetzt liegt es an Ihnen, Jython auszuprobieren. Viel Glück!