© DrHitch/Shutterstock.com
Webentwicklung mit dem Play Framework

1 Grundlagen


Play ist ein Full-Stack-Webframework – geschrieben von Webentwicklern für Webentwickler. Der Name ist Programm: Geradezu spielend lassen sich einfache, aber auch komplexe Webanwendungen entwickeln. Und dabei blickt das Framework auf eine inzwischen mehr als fünfjährige Entwicklungsgeschichte zurück. Inzwischen hat Play Einzug in den Typesafestack [1] gehalten.

Wer kennt das nicht? Ein neues Webprojekt, die Ziele sind definiert, die Entwicklermannschaft steht bereit, technologisch ist man sich einig – JSF, CSS, JavaScript, Spring, Hibernate, Datenbank XY (oder Ähnliches). Gebaut wird mit Maven und entwickelt mit der Lieblings-IDE. Am Ende steht ein fertiges Produkt, und es funktioniert. Wozu also ein weiteres Framework, das am Ende auch nichts anders tut als die Entwicklung eines funktionierenden Produkts zu unterstützen bzw. zu erleichtern? Wäre die Vorstellung, dass alle möglichen Funktionen der Webapplikation in einer zentralen Konfiguration verwaltet und dann noch zur Compilezeit auf gültige Verweise (Navigationspfade) geprüft werden, nicht interessant? Oder wie wäre es mit der Idee, nach der Installation alle für eine Webapplikation notwendigen Komponenten an der Hand zu haben, also den kompletten Stack? Sollte eine testgetriebene Entwicklung, gerade bei komplexeren Applikationen, nicht gängige Praxis sein? Hier bringt Play mit seiner Testinfrastruktur inklusive Selenium-Tests alle notwendigen Werkzeuge mit. Oder wie wäre es mit der Möglichkeit eines automatischen Hot Deployments? Das sind nur einige Punkte. Interessiert? Dann kommen Sie mit auf eine Erkundungstour.

Dieses durch [2] inspirierte Tutorial zeigt, wie in Play 2 ganz praktisch Webapplikationen erstellt werden. Dabei werden alle Bereiche einer Play-Anwendung beleuchtet: Validierung, Fehlerbehandlung, Security, automatisierte Tests etc. Unterschiede zu Play 1 oder anderen Frameworks spielen dabei keine Rolle.

Installation, Projekterstellung und IDE-Integration

Die Installation geht – wie hätte es anders sein sollen? – spielerisch von der Hand. Nach dem Download der ZIP-Datei (wir verwenden die Version 2.0.4) [3] wird diese entpackt (Spaces im Pfad nach Möglichkeit vermeiden). Für ein komfortableres Arbeiten sollte der Ordner in den PATH (des Systems) aufgenommen werden. Ein JDK (Version 6 oder höher) muss sich ebenfalls auf dem System befinden. Wenn wir nun in einer Konsole play eingeben, sollten wir eine Rückmeldung vom Framework bekommen – damit ist Play installiert.

Nun können wir ein neues Projekt anlegen. Dazu wechseln wir in der Konsole in den Pfad, in dem wir unser Projekt erzeugen wollen (bspw. D:\Projekte\WebApps). Mit play new <Applikationsname> werden wir durch den Wizard geführt. Für unsere Tour erzeugen wir ein Projekt TodoList. Die Frage nach dem Namen bestätigen wir mit ENTER und erstellen ein Java-Projekt (Java- und Scala-Code lassen sich mischen, womit die Auswahl des Templates hier nicht fest ist, Abb. 1.1).

Simon_Play_1.png

Abbildung 1.1: Erstellung der TodoList-Applikation

Gratulation! Sie haben Ihre erste lauffähige Play-Applikation erstellt. Glauben Sie nicht? Wechseln wir in das erstellte Verzeichnis (TodoList) und öffnen eine Play-Console (mit play). Hier starten wir die Applikation mit run in einem Webserver auf Port 9000. Play bringt Netty als Webserver mit. Im Browser können wir unsere Applikation mit dem URL http://localhost:9000 erreichen. Und das Beste: Mit unserer ersten Play-Web-Applikation haben wir eine Offlinedokumentation an der Hand, die uns im Browser angezeigt wird. Diese Dokumentation ist in späteren Entwicklungsphasen immer über den URL http://localhost:9000/@documentation/ aufrufbar.

Natürlich wollen wir dieses Applikationsskelett verändern. Bei der Vorbereitung des Projekts für unsere IDE unterstützt uns Play ebenfalls. Ein play eclipsify erzeugt alle Projektdateien für Eclipse. Andere Entwicklungsumgebungen werden ebenfalls unterstützt. Für IntelliJ geschieht dies mit play idea. Nun können wir unsere Applikation in Eclipse importieren: FILE | IMPORT > GENERAL | EXISTING PROJECTS INTO WORKSPACE. Als Root-Verzeichnis wählen wir das angelegte Projektverzeichnis. In unserer IDE haben wir nun unser Projekt, das die in Abbildung 1.2 zu sehende Struktur aufweisen sollte.

Simon_Play_2.png

Abbildung 1.2: Projektstruktur einer Play-Applikation

Play-Konsole

Play bringt seine eigene Konsole mit. Durch Eingabe von play in einer Betriebssystemkonsole können wir die Konsole starten, wenn wir uns in einem Play-Applikationsverzeichnis befinden.

Nützliche Kommandos in der Play-Konsole

Eine Übersicht aller Kommandos erhalten wir durch help. Die für dieses Tutorial relevanten Kommandos sind:

  • new <Name> erstellt ein Verzeichnis unter dem Namen und legt dort eine Play-Applikation an.
  • run startet die Applikation im Webserver mit der Fähigkeit des Hot-Deployments. Hierbei handelt es sich um den Developer-Modus.
  • ~run: Eine vor das run-Kommando gestellte Tilde bewirkt, dass alle Änderungen sofort nach dem Speichern übersetzt werden und nicht erst nach einem Refresh im Browser.
  • start übersetzt das Projekt und startet einen Webserver mit den übersetzten Ressourcen (für Produktion, noch besser: stage bzw. dist [4]).
  • test führt die Tests aus.
  • h2-browser startet einen DB-Browser. Mit diesem können wir die verwendete H2-DB der Applikation untersuchen und verändern.

Struktur einer Play-Applikation

Das wichtigste Verzeichnis ist app. Darin befinden sich die Ordner controllers, models (nach Projekterzeugung noch nicht vorhanden) und views. Play richtet sich also nach dem MVC-Pattern. Natürlich können hier weitere Packages erstellt werden.

Im conf-Verzeichnis befinden sich die Konfigurationsdateien einer Play-Applikation. Die application.conf stellt die Konfiguration der Applikation zur Verfügung, und die routes definiert die eingangs erwähnte zentrale Konfiguration der möglichen Navigationspfade. Im conf-Verzeichnis liegen auch...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang