Inhaltstypen
21.03.2014

Das Play Framework

Play bringt die Vorteile der mächtigen Java-Tools auf leichtfüssige Art in den Web-Entwicklungsbereich.

Everybody likes to play!

Da wir bei insign vermehrt das Play Framework für Weblösungen aller Art einsetzen (und verschiedene Komponenten als open-source veröffentlichen), werde ich hier in looser Folge verschiedene Aspekte dieses Frameworks vorstellen.

Everybody likes to play – Dieser Satz gilt mit Sicherheit für unsere Entwickler:

jeder in unserem Team, der mit dem Play Framework gearbeitet hat, möchte nicht mehr wechseln. In diesem Artikel zeige ich die Vor- und Nachteile auf, und versuche einen kurzen Vergleich mit anderen Frameworks zu ziehen.

Play – what?

Play Applikationen werden in Java (oder Scala) programmiert. Dabei will sich Play bewusst von klassischem, für Weblösungen zu schwerfälligen JEE (Java Enterprise Edition) abheben. Das ist aus unserer Sicht gut gelungen:

Für viele Aspekte standen so erfolgreiche Frameworks wie Ruby on Rails Pate. Andererseits stehen dem Entwickler trotzdem die mächtigen Tools der Java-Welt zur Verfügung – ein wichtiger Vorteil für Enterprise-level Lösungen. Play setzt dabei eigene Akzente – z.B. mit dem Reactive Manifesto.

 

Play Framework – die Vorteile

  • Sehr ausgereifte Technologien: Java rsp. die Java Virtual Machine (worin auch Scala läuft) als Grundlage
  • Nahezu alle Tools und Libraries aus der Java-Welt einsetzbar
  • Trotzdem federleicht im Vergleich zum JEE-Stack
  • Web pur: Stateless wie HTTP und daher frei skalierbar
  • Performance. Ohne Kompromisse (non-blocking I/O).
  • Testing-Framework integriert
  • Typensicherheit – bis runter ins Template!
  • Compile on the fly  (“hit refresh” workflow)Hype “Functional Programming” – mit Scala schon jetzt einsetzbar

Natürlich gibt es auch Nachteile:

Type Safety erfordert Kompilieren. Kompilieren erfordert Zeit. Insbesondere bei Play, wo auch die Templates kompiliert werden, kann das spürbar werden. Dafür sind nach erfolgreicher Kompilation 80% der Bugs schon raus – während das Debugging z.B. mit PHP dann erst beginnt.

Die JVM mag Speicher. Immer. Im Gegensatz zu PHP erfordert der Betrieb einer Java-Lösung eine permanent aktive Java Virtual Machine. Wo man bei PHP unzählige kleine, unabhängige Kundenlösungen auf einen Server packen kann, sollte man für Play-Lösungen am besten einen dedizierten Server einrechnen – was sich aber ab einer gewissen Projektgrösse sowieso gehört.

Verschiedene Frameworks, gleiche Konzepte

Wer heute die am weitesten verbreiteten Frameworks vergleicht, wird feststellen, dass die meisten davon ganz ähnliche Konzepte verfolgen. Bei jungen Frameworks stand nicht selten Ruby on Rails Pate – dessen Einfachheit und Eleganz inspirierte manche Entwickler. Zu den Kernprinzipien dieser Frameworks gehören:

  • MVC-Architektur
  • DRY – don’t repeat yourself
  • Convention over configuration
  • ORM statt SQL

Die Frameworks, welche wir in der PHP-Welt einsetzen, Symfony2 oder Typo3 FLOW, folgen ebenfalls diesen Prinzipien. Als ORM setzen beide PHP Frameworks Doctrine ein – welches sich stark an JPA aus der Java-Welt orientiert (Hibernate wird denn bei Doctrine auch als Inspirationsquelle genannt). Doctrine implementiert Annotations für PHP durch Quellcode-Analyse – weil in PHP (im Gegensatz zu Annotations in Java) Annotations kein direktes Sprach-Feature sind.

FLOW geht in Sachen “Convention” noch etwas weiter als Symfony und bietet Features wie Dependency Injection und Aspect Oriented Programming, die es in PHP direkt eigentlich (noch) nicht gibt. Um diese Magie zu ermöglichen, wird unter der Haube von FLOW auch heftig gearbeitet und PHP-Code on the fly “umgeschrieben“.

Subjektiv gesehen gehen damit diese Frameworks, insbesondere FLOW, an (rsp. je nach Anschauung auch über) die derzeitigen Grenzen von PHP. In diesem Grenzbereich ist vieles noch nicht standardisiert und nur durch Quellcodeanalyse machbar.

Das auf Java (rsp. Scala) basierende Play Framework profitiert hier von einem mächtigeren und stabilen Unterbau. Zwar wird auch und nicht zu knapp on-the-fly kompiliert (Stichwort kompilierte Templates), aber die grundlegenden Bausteine sind in Java enthalten und müssen nicht über Umwege herbeigeführt werden. Zudem stehen für viele Aufgaben im Enterprise-Umfeld wesentlich mehr und ausgereiftere Java- als PHP-Tools zur Verfügung. Wer z.B. schon mal SAP- oder Navision-Integrationen via SOAP mit PHP und mit JAVA gemacht hat, kennt die Unterschiede.

(Noch) kein Play CMS

Für grössere Webprojekte kommt meist ein Content Management System als integrierende Basis für die Applikationen zum Einsatz. In der PHP-Welt gib’s dazu jede Menge Open-Source Lösungen, von Joomla über WordPress bis zum TYPO3 CMS – jedes mit seinen Vor- und Nachteilen. Bei Play gibt es noch kein gängiges, ausgereiftes Open-Source CMS.

… aber bald!

Aus diesem Grund haben wir unsere über 12-jährige Erfahrung in der CMS-Entwicklung zusammengepackt und uns entschieden, ein Open-Source CMS für das Play Framework zu entwickeln. Unser Fokus liegt dabei auf “Enterprise-readiness”, flexibler Erweiterbarkeit und einfacher Integration von Applikationen. Der Release unseres Play CMS’ erfolgt in den nächsten Wochen.

Mehr dazu aber in einem späteren Beitrag.

letzte 4 Blog-Beiträge

Hyvä für Magento: Wenn das Frontend endlich kein Bremsklotz mehr ist

Viele Magento-Shops leiden unter einem veralteten, komplexen Frontend, das Performance, Core Web Vitals und Conversion ausbremst. Hyvä setzt hier an und macht Magento mit einem modernen, schlanken Frontend wieder schnell, wartbar und nutzerfreundlich. In diesem Beitrag zeigen wir, wann sich Hyvä...

Webclient-Entwicklung für komplexe Business Software

Moderne Webclients bringen komplexe Business Software direkt in den Browser – schnell, sicher und einfach bedienbar. Am Beispiel des ARTS Webclients für Interact/SER/Doxis zeigt insign, wie bestehende Systeme mit React, sauberer API-Integration und durchdachter Benutzerführung zukunftsfähig gemacht...

Magento zu Shopify: Wann sich der Wechsel lohnt

RAUSCH hat den bisherigen Magento-2-Shop durch eine flexible Shopify-Lösung ersetzt – mit weniger technischem Aufwand, mehr Eigenständigkeit im Marketing und deutlich besseren E-Commerce-Resultaten. Das Referenzprojekt zeigt, wann sich der Wechsel von Magento zu Shopify lohnt und worauf es bei...

Magento-Migration für DonCigarro

DonCigarro und insign verbindet eine E-Commerce-Partnerschaft seit 2005. Nach einer individuellen Lösung und einem Magento-1-Shop folgte nun die konsequente Migration auf Magento 2. Entstanden ist ein moderner Zigarren-Onlineshop mit schnellem ScandiPWA-Frontend, markengerechtem Design und...

diesen Beitrag teilen