Philipps 5 mins: Web-Development mit dem Play Framework Part 1
Wie einige vielleicht ja schon wissen beschäftige ich mich jetzt schon seit einige Zeit mit dem recht neuen, aber mittlerweile immer bekannterem, Java-basiertem Web-Framework Play!. Anders als bei vielen neueren Frameworks wird nicht durch die Mittel einer dynamischen Sprache, sondern durch die Vereinfachung der bestehenden Sprachmittel von java versucht die Entwicklung einer Web-Anwendung zu beschleunigen und zu vereinfachen. Das bedeuten unter anderem das konsequente Weglassen der bisherigen Package-Struktur. Auf der anderen Seite werden altbewährte Bibliotheken aus der Java-Welt verwendet (z.B. JPA, Hibernate, Lucene, usw.). Da es eine ganze Menge an englischsprachigen Tutorials gibt und ich mir schon länger vorgenommen habe in einem kleinen Tutorial die grundlegenden Züge einer Play!-Anwendung zu beschreiben, wird dieser Text mal wieder in Deutsch sein :-).
Play verwendet – wie fast alle aktuellen Web-Frameworks ein MVC-Pattern. So sollte es einem Entwickler (egal ob Ruby, Java oder Python), der mit der aktuellen Techniken vertraut ist, relativ leicht fallen, sich mit dem typischen Aufbaue einer Play-Anwendung zurecht zu finden.
Die Installtion des Frameworks ist auf der Seite des Projektes gut erklärt. Neben einer aktuellen JVM sind keine weiteren Vorrausetzungen zu erfüllen. Wichtig ist nur, dass das “play” Script im aktuellen Pfad erreichbar ist.
Nachfolgend möchte ich eine kleine Bookmark-Verwaltung erstellen.
Mit einem
# play new bookmarks
Wird die Grundstruktur einer Play-Anwendung erstellt.
- app:
Das oberste Verzeichnis enthält alle Modelle, Controller und Views der Anwendung (dazu später mehr). - Unter “conf” befinden sich folgende Dateien:
- application.conf:
Konfiguration der Anwendung – Art der DB, Caching, Konfiguration der Module - dependencies.yml:
Play unterstützt Module, die verschiedene Funktionen kapseln können. Seit Version 1.2 werden die Abhängigkeiten einer Anwendung durch Einträge in dieser Datei gesetzt. - messages:
Diese Datei wird für die Internationalisierung einer Anwendung benötigt (amerikanische Strings). Um eine neue Sprache hinzu zu fügen legt man eine neue Datei mit dem entsprechenden Ländercode an – z.B. messages.de für deutsch. - routes:
Play ermöglicht es, durch Einträge in dieser Datei, das Routing der Anwendung zu beeinflussen. Es erfolgt ein Mapping von URL auf Controller-Actions (dazu später mehr).
- application.conf:
- Das lib Verzeichnis kann verwendet werden um Java Libs dort zu speichern, die nicht als Modul für Play! zur Verfügung stehen. Alle Jars im libs-Verzeichnis werden automatisch in den Classpath der Anwendung aufgenommen.
- Das test Verzeichnis enthält die die Testdateien (Junit-/Selenium-Tests sowie ew. Fixures mit Testdaten).
Nach dem ersten Start der Anwendung werden noch zwei weitere Verzeichnisse erstellt:
- Ein tmp-Verzeichnis (welches die kompilierten Klassen, sowie Caching Dateien ernhält) und ein
- db-Verzeichnis, welches bei der Wahl einer h2 Datenbank, die entsprechende Datenkbankdatei enthält (auch dazu später mehr).
Dies soll für die ersten 5 Minuten genügen :-).