Artikel

 
Januar 2010 | Artikel

Webanwendungen mit dem Java-Framework Play!

(Link zum Artikel: http://www.it-republik.de/jaxenter/artikel/2813)

Spielerisch zum Ziel

Text: Timo Haberkern
Webframeworks für Java gibt es wie Sand am Meer. Mit Play! hat sich vor Kurzem ein weiteres in die lange Liste eingetragen. Im Vergleich zu anderen Frameworks macht Play! vieles anders. Effizienz, Geschwindigkeit und schnelle Entwicklungszeiten werden hier großgeschrieben.
Teil 1   Teil 2   Teil 3   

Für nahezu jede Programmiersprache existiert heute mindestens ein Webframework im Stile von Ruby on Rails, das verspricht, besonders effizient und produktiv zu sein. Rapid Application Development ist das Schlagwort der letzten Jahre. Erstaunlicherweise hat es ausgerechnet im Java-Lager lange gedauert, bis ein solches Framework zur Verfügung stand. Zwar existieren dort bereits seit Jahren sehr leistungsstarke Lösungen, die funktional zwar sehr mächtig sind, im Gegenzug jedoch dazu führen, dass die Produktivität durch zu viel Quellcode und Konfigurationsarbeiten leidet. Nicht umsonst eilt der Entwicklung von Webanwendungen mit Java der Ruf voraus, schwerfällig und zeitraubend zu sein und seine Vorteile erst in sehr großen Projekten auszuspielen. Einige Webframeworks schicken sich an, diesen Umstand zu ändern. Das im Folgenden vorgestellte Play! ist eines von ihnen.

Das erklärte Ziel der Play!-Entwickler ist es, ein schnelles und schlankes Framework zu entwickeln, wobei sich schnell sowohl auf die Ablaufgeschwindigkeit als auch auf die Entwicklungseffizienz bezieht. Das Framework versucht hier den Spagat zwischen mehreren Welten. Zum einen versucht es die Einfachheit und Effizienz von Hype-Frameworks wie Rails oder Django und Scripting-Sprachen wie Ruby zu erzielen und zum anderen Java, mit seinen Vorteilen gegenüber nicht typisierten Skriptsprachen, als Plattform und Sprache zu nutzen. Dies gelingt auch gut. Bewährte Java-Bibliotheken wie Hibernate, Lucene, Quarz und andere werden hinter einer einfachen und schnell erlernbaren Fassade versteckt. Play! kümmert sich um die meisten lästigen Arbeiten, sodass mehr Zeit für das Wesentliche während der Entwicklung bleibt.

Erste Schritte

Die Installation des Play!-Frameworks ist mit geringem Aufwand verbunden, sie beschränkt sich auf das Entpacken der Downloadversion auf dem lokalen Entwicklungssystem. Neben einem aktuellen JDK (Version 5 oder neuer) wird auf Entwicklerrechnern auch Python benötigt. Unix und MAC-OSX-Anwender haben dies in der Regel standardmäßig installiert. Für Windows-Benutzer sind die Python-Runtime-Programme bereits im Frameworkdownload enthalten. Nach dem Hinzufügen des Installationsverzeichnisses zur Pfad-Umgebungsvariablen ist alles für den ersten Einsatz vorgebreitet.

Play! ist ein so genanntes MVC-Framework. Hinter diesem Kürzel verbirgt sich das Model-View-Controller-Entwurfsmuster. Der Grundgedanke hinter diesem Pattern ist die strikte Trennung zwischen den Aufgabenbereichen einer Anwendung. Folgende Bereiche lassen sich hierbei unterscheiden:

  • Model: In der Model-Schicht ist die Datenlogik einer Anwendung untergebracht. Alle Klassen, die für den Zugriff auf Daten einer Datenbank verantwortlich sind, werden dieser Schicht zugeordnet.
  • View: Die Anzeigelogik einer Anwendung gehört zur View-Schicht. Play! unterstützt die Ausgabe von Webseiten durch diverse Tags, die ganze HTML-Konstrukte erzeugen können.
  • Controller: Diese Schicht ist das Bindeglied zwischen den beiden anderen Schichten. In einem Controller ist die Steuerungslogik zusammengefasst. In der Regel veranlasst der Controller, dass Daten durch die Model-Klassen aus der Datenbank gelesen werden, und gibt diese an die View-Schicht zur Anzeige weiter.

In Abbildung 2 werden die Zusammenhänge zwischen den einzelnen Schichten in grafischer Form dargestellt. Diese Art der Trennung von Aufgaben einer Anwendung in einzelne, voneinander unabhängige Teile hat mehrere Vorteile. So steigen dadurch beispielsweise die Übersichtlichkeit und damit auch die Wartungsfreundlichkeit des Quellcodes. Des Weiteren ist es einfacher, einzelne Bereiche durch neue Implementierungen auszutauschen. Wenn beispielsweise die Daten nicht mehr aus einer Datenbank, sondern per Webservice geladen werden sollen, genügt es in der Regel, die Model-Klassen anzupassen, die Controller-Klassen und die View-Bereiche bleiben in der Regel unberührt.

Welcher Controller aufgerufen wird, entscheidet das Framework selbstständig anhand des aufgerufenen URLs. Hierfür ist der so genannte Dispatcher verantwortlich, der aufgrund definierter Routing-Regeln automatisch zum passenden Controller weiterleitet. Eine Anwendung besteht somit aus mehreren Controller-Klassen.

Teil 1   Teil 2   Teil 3   

Anzeige

Kommentare


Anzeige

zurück zum Seitenanfang