Moderne Webentwicklung mit Java EE 7: Ein Experiment

Java EE 7 ist deutlich "leichtgewichtiger" als die Vorgänger. Das regt zu einem Experiment im Vergleich mit Ruby on Rails an.

In Pocket speichern vorlesen Druckansicht 9 Kommentare lesen
Moderne Webentwicklung mit Java EE 7: Ein Experiment
Lesezeit: 18 Min.
Von
  • Stefan Mack
Inhaltsverzeichnis

Lange Zeit hatte die Enterprise Edition von Java bei Softwareentwicklern keinen guten Ruf. Durch große Mengen an Boilerplate-Code und ausufernde Framework-Konfigurationen in XML-Dateien wurde die Entwicklung umständlich und schwerfällig. Mit Java EE 7 hat sich das verändert. Man könnte sogar fast sagen, dass Java "leichtgewichtig" geworden ist. Ein Beispielprojekt lotet die Möglichkeiten von Java EE 7 für die Webentwicklung aus.

Vor über zehn Jahren sorgte David Heinemeier Hansson mit einem kurzen Video für Aufsehen. Er programmierte innerhalb von 15 Minuten ein funktionierendes Blog-System inklusive Kommentarfunktion, indem er ein neues Webframework für eine bis dahin recht unbekannte Programmiersprache einsetzte: Ruby on Rails. Das Framework übernahm viele der sonst manuellen Entwicklertätigkeiten und ermöglichte eine hohe Produktivität, da es große Teile der Konfiguration überflüssig machte und stattdessen Entwickler zur Einhaltung bestimmter Standards zwang ("Convention over Configuration"). Dadurch konnten sich Programmierer auf die Features konzentrieren und mussten sich nicht mit bereits gelösten Problemen wie der Datenbankabstraktion herumärgern.

Über eine Dekade später nähert sich Java der Leichtgewichtigkeit von Ruby on Rails an. Annotationen im Code ersetzen die XML-Konfiguration weitgehend, Standards vermeiden unnötige Individualisierungen und einfache POJOs (Plain Old Java Objects) lösen umfangreiche Klassenhierarchien ab. Im Folgenden wird die Umsetzung eines am obigen Beispiel angelehnten Blog-Projekts mit Java EE 7 gezeigt. Der Sourcecode ist auf GitHub verfügbar.

Es kommen bewusst nur Techniken zum Einsatz, die zum Standard von Java EE 7 zählen. Insbesondere sind das folgende:

  • Java Persistence API (JPA) für die Persistenz
  • Bean Validation für die Validierung
  • JavaServer Faces (JSF) für die Weboberflächen
  • Contexts and Dependency Injection (CDI) für die Injektion von Abhängigkeiten

Abbildungen 1 und 2 zeigen die zwei Oberflächen des Beispielprojekts. Es handelt sich – wie beim Rails-Beispiel – um eine simple Blog-Anwendung, die Posts aus einer Datenbank liest und einfache Kommentare über ein Formular erlaubt.

Die Liste der Blog-Posts ohne Editierfunktion (Abb. 1)

Simple Kommentarfunktion mit Persistierung und Validierung des Eintrags (Abb. 2)