26. August 2015 | 2 min lesezeit

JSR 371 – MVC 1.0

Eine wesentliche Neuerung in Java EE 8 wird ein zweites – diesmal actionbasiertes – Webframework sein. Die Spezifikation des neuen Standards mit dem Namen MVC 1.0 erfolgt im JSR 371.

Maßgeblich für die Aufnahme von MVC 1.0 in den Spezifikationsprozess war die Java Community, die in einer Umfrage Anfang 2014 mehrheitlich ein actionbasiertes Webframework als Alternative zum komponentenbasierten JSF forderte. Die Entscheidung führte in der JSF Community zu der Sorge, dass Oracle die Weiterentwicklung von JSF einstellen könnte. Dies wurde jedoch von Ed Burns (JSF Spec Co-Lead) und Reza Rahman in zwei Beiträgen (Link 1, Link 2) richtig gestellt. Ähnlich wie im .NET Framework mit ASP.NET und ASP.NET MVC sollen zukünftig beide Ansätze in Java EE unterstützt werden. MVC 1.0 wird JSF also nicht ersetzen sondern ergänzen.

Im Gegensatz zum komponentenbasierten Ansatz von JSF, der nahezu vollständig vom HTTP-Request/-Response-Modell abstrahiert, stellt der actionbasierte Ansatz von MVC 1.0 den HTTP-Request/-Response in den Fokus. Der eingehende Request wird auf Basis der URL und der HTTP Method durch den Controller auf eine spezifische Aktion dispatched, die den Request verarbeitet und die gewünschte Logik ausführt. Der Entwickler hat darüber hinaus vollen Zugriff auf die Response und das gerenderte HTML. Apache Struts, der Quasi-Standard der Nuller Jahre, ist einer der bekanntesten Vertreter aus der Reihe der actionbasierten Webframeworks und immer noch in älteren Anwendungen zu finden. Bei Neuentwicklungen kamen in den letzten Jahre vor allem Spring-MVC und Jersey-MVC zum Einsatz, wobei ersteres sicherlich als De-facto-Standard bezeichnet werden kann.

Technologisch wird MVC 1.0 als Aufsatz auf JAX-RS realisiert. Das bedeutet dass jeder Controller gleichzeitig auch eine JAX-RS Ressource ist. Das Modell basiert (vorzugsweise) auf CDI-Beans während für die View die Nutzung von JSP und Facelets vorgesehen. Weitere Template Engines wie FreeMarker, Velocity oder Thymeleaf sollen ebenfalls genutzt werden können und werden mit Hilfe so genannter View Engines in MVC integriert. Für die Referenzimplementierung von MVC entschied man sich gegen Spring-MVC und Jersey-MVC und für eine Neuimplementierung mit dem Namen Ozark. Neben der von der Spezifikation geforderten Unterstützung von JSP und Facelets wird Ozark View Engines für FreeMarker, Velocity, Thymeleaf, Mustache und Handlebars bereitstellen.

Die offizielle Informationen zum JSR 371 lassen sich unter https://jcp.org/en/jsr/detail?id=371 nachlesen. Der aktuelle Entwicklungsstand der MVC API und der Referenzimplementierung  kann über GitHub heruntergeladen und mit dem Glassfish 4.1 getestet werden.


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen