Suche
Interview mit Christian Kaltepoth

„Es gibt hunderte Frameworks und viele Meinungen darüber, welches denn das beste ist“

Redaktion JAXenter

Christian Kaltepoth

Das neue Java-EE-Framework „MVC“ wird in der Community mit Spannung erwartet. Auf der W-JAX 2015 wird Christian Kaltepoth in seiner Session darstellen, welche Vorteile das Web-Framework bietet. Wir haben ihn vorab nach seinen Erfahrung mit MVC gefragt und wie es sich von anderen Frameworks wie Vaadin, Wicket und Co. unterscheidet.

JAXenter: Das neue MVC Framework für Java EE 8 nimmt immer mehr Gestalt an. Weshalb war aus deiner Sicht der Wunsch nach einer Alternative zu JSF so stark? Immerhin 60% sprachen sich ja in der Community-Umfrage dafür aus.

Christian Kaltepoth: Das Thema Webframeworks wird ja seit jeher heiß diskutiert. Es gibt hunderte von Frameworks und ebenso viele Meinungen darüber, welches denn „das beste“ ist. Der Grund dafür, dass sich bis heute kein eindeutiger Gewinner gefunden hat, liegt auf der Hand. Welches Framework für eine Webanwendung am geeignetsten ist, hängt stets von den konkreten Anforderungen und Rahmenbedingungen ab und kann somit nicht pauschal beantwortet werden.

Mit JSF bietet die Java-EE-Plattform seit vielen Jahren eine Technologie aus der Kategorie der komponentenorientierten Webframeworks. Aber es gibt eben auch andere Kategorien, die in bestimmten Situationen besser geeignet sind. MVC 1.0 gehört zur Klasse der aktionsbasierten Frameworks, welche im Allgemeinen leichtgewichtiger sind und dem Entwickler mehr Kontrolle über HTTP Requests und das generierte HTML geben. Diese Eigenschaften werden meiner Meinung nach in Zeiten von HTML5 und leistungsfähigeren Browsern immer wichtiger für die Anwendungsentwicklung.

MVC 1.0 steht somit nicht in direkter Konkurrenz zu JSF, sondern repräsentiert einfach einen alternativen Ansatz für die Entwicklung von Webanwendungen, der abhängig von den spezifischen Anforderungen eine bessere Technologieentscheidung sein kann.

JAXenter: Kannst du einmal 2 Beispiele von Anwendungen nennen. Für welche Anwendungen ist JSF, für welche das neue MVC prädestiniert?

Christian Kaltepoth: Eine der besonderen Stärken von JSF ist beispielsweise der Umgang mit Formulardaten. Bei der Verarbeitung von Benutzereingaben ist eine ganze Reihe von Aspekten zu beachten. Da Eingaben üblicherweise an Java Bean Properties gebunden werden, müssen sie zunächst in den korrekten Datentyp konvertiert werden. Dabei sind oft auch sprachenabhängig unterschiedliche Formate zu unterstützen, wie beispielsweise bei Datumsangaben und Dezimalwerten. Anschließend müssen die konvertierten Daten validiert werden. Im Fehlerfall sollte der Benutzer mit einer entsprechenden Meldung informiert werden und die Möglichkeiten zur Korrektur der Eingabe erhalten. All das bekommt man mit JSF quasi geschenkt, sodass sich auch komplexe Formulare oft mit nur sehr wenig Aufwand implementieren lassen. Aus diesem Grund ist JSF besonders für formularreiche Anwendungen geeignet, wie sie häufig bei Geschäftsanwendungen im Intranet zu finden sind.

Im Falle von MVC ist der Fokus jedoch ein Anderer. Das Ziel von MVC ist es, ein sehr leichtgewichtiges Webframework bereitzustellen, welches volle Kontrolle über Aspekte wie das generierte HTML und die durchgeführten HTTP Requests gibt. Der Entwickler ist damit näher an den Basistechnologien HTML und HTTP und ist dadurch sehr viel flexibler. So ist beispielsweise die Integration von JavaScript-Komponenten oder CSS Frameworks sehr einfach möglich. Auch ist man in der Lage bei Bedarf Konzepte wie Progressive Enhancements zu implementieren, was bei komponentenorientierten Frameworks meist gar nicht vorgesehen und somit nur schwer umsetzbar ist.

JAXenter: Nun gibt es ja tausende von Frameworks da draußen – Spring, Vaadin, Wicket, etc. Weshalb sollte sich MVC hier durchsetzen? Was bringt MVC mit, was es nicht schon gibt?

Christian Kaltepoth: An dieser Stelle ist es sehr wichtig, zu betonen, dass MVC 1.0 nicht das Ziel hat, sich gegenüber anderen Frameworks mit bahnbrechenden neuen Ideen durchzusetzen. Das MVC-Entwurfsmuster und aktionsbasierte Webframeworks sind ja kein neues Thema mehr. Die Aufgabe eines JSRs sollte stets die Standardisierung von Konzepten sein, die sich in der Praxis bereits bewährt haben. Die JPA-Spezifikation ist ein Beispiel, bei dem das sehr gut funktioniert hat. JPA hat sich stark an dem damaligen de-facto Standard Hibernate orientiert, was dazu geführt hat, dass eine sehr praxistaugliche und gut zu verwendende API entstanden ist.

Aus meiner Sicht sollte MVC 1.0 ein ähnliches Ziel verfolgen. Wenn man sich die verschiedenen Umfragen in der Java Community anschaut, so ist Spring MVC eines der verbreitetsten aktionsbasierten Java Webframeworks. Genau aus diesem Grund ist MVC 1.0 auch in vielen Bereichen durch Spring MVC inspiriert. Die wesentliche Frage ist, welche Konzepte und Verfahren sich im Bereich der aktionsbasierten Webframeworks etabliert und in der Praxis bewährt haben. Diese Erkenntnisse sollten die Basis für MVC 1.0 sein.

Darüber hinaus liegt der Mehrwert von MVC 1.0 vor allem auch darin, dass es Bestandteil einer Plattform ist, welche großen Wert auf Abwärtskompatibilität legt. Besonders für langlebige Projekte ist die Frage entscheidend, ob die verwendeten Frameworks auch in vielen Jahren noch gepflegt werden und Support geboten wird. Und gerade diese Eigenschaft sehe ich als großen Vorteil der Java-EE-Plattform und somit auch von MVC 1.0 als Basis für Webanwendungen.

JAXenter: Wie ist der aktuelle Stand? Wie fertig ist MVC schon?

Christian Kaltepoth: Die Expert Group hat recht früh die Entscheidung getroffen, dass MVC 1.0 auf JAX-RS aufbauen wird. Aus meiner Sicht war das die richtige Entscheidung, da JAX-RS bereits viele Grundlagen bereitstellt. So wird beispielsweise das Routing und das Parameter-Binding durch die Standardmechanismen von JAX-RS realisiert. Hat ein Entwickler bereits mit JAX-RS gearbeitet, so wird er sich schnell zu Hause fühlen. Außerdem sind MVC Controller immer auch CDI Beans, wodurch sie alle Features des CDI-Komponentenmodells nutzen können. Dazu zählen Dependency Injection, Lifecycle Callbacks, Interceptoren und vieles mehr.

Ein besonderes Highlight von MVC 1.0 ist das erweiterbare View-Engine-Konzept. Von Hause aus werden JSP und Facelets als View-Technologien unterstützt. Mittels einer einfachen API können darüber hinaus beliebige andere Template Engines integriert werden. Die MVC-Referenzimplementierung Ozark bietet beispielsweise zusätzlich Unterstützung für Thymeleaf, Freemarker, Velocity, Mustache, Jade und einige weitere.

Auch das Thema Security wird von MVC 1.0 behandelt. So bietet MVC unter anderem einen Mechanismus zur Verhinderung von Cross-Site-Request-Forgery-Angriffen. Ich halte es für sehr wichtig, dass Schutzmechanismen gegen verbreitete Angriffe bereits Bestandteil eines Webframeworks sind, damit Entwickler dem Sicherheitsaspekt von Anfang an genügend Aufmerksamkeit widmen können.

Vor wenigen Tagen wurde der zweite Early Draft Review von MVC 1.0 veröffentlicht. Trotzdem gibt es natürlich noch viel zu tun. Wichtige offene Punkte sind zum Beispiel die Themen Internationalisierung und Lokalisierung. Außerdem wird noch über einen typensicheren Weg zur Erstellung von URLs diskutiert. Und natürlich ist zum aktuellen Zeitpunkt vor allem auch Feedback aus der Community willkommen.

JAXenter: Was sind außer MVC für dich die Highlights in Java EE 8?

Christian Kaltepoth: Ich bin vor allem auf CDI 2.0 sehr gespannt. Das liegt zum einen daran, dass die Integration mit CDI in vielen weiteren JSRs immer weiter vorangetrieben wird und CDI somit noch mehr zu einem integralen Bestandteil der Java-EE-Plattform wird. Zum anderen erwarten uns mit CDI 2.0 natürlich eine ganze Reihe neuer spannender Features, wie asynchrone Events und die Java SE Bootstrap API.

Da ich mich hauptsächlich mit Webanwendungen beschäftige, ist natürlich Servlet 4.0 ebenfalls ein sehr spannendes Thema. Die neue Major-Version der Servlet-Spezifikation hat sich mit der geplanten Unterstützung von HTTP/2 ein großes Ziel gesetzt. Ich glaube, dass Konzepte wie Request/Response Multiplexing und Server-Push die Art und Weise in der wir Webanwendungen entwickeln grundlegend verändern werden. Daher wird das Thema Servlet 4.0 sicherlich sehr interessant werden.

Christian Kaltepoth arbeitet als Senior Developer bei ingenit GmbH & Co. KG in Dortmund. Sein Schwerpunkt ist die Entwicklung von webbasierten Unternehmensanwendungen auf Basis von Java-EE-Technologien. Darüber hinaus ist er in mehreren Open-Source-Projekten wie Apache DeltaSpike, Rewrite, PrettyFaces und Togglz aktiv. Er ist Mitglied der JSR 371 Expert Group und ein regelmäßiger Sprecher auf Konferenzen.

Verwandte Themen:

Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.