"Kritik an JSF gab es immer wieder – und das ist auch gut so."

JAXenter: Der HTML5-friendly Markup-Support ist auch eines der so genannten sechs „Big Ticket Features“ von JSF 2.2. Kannst du uns ein bisschen was über die anderen fünf Features erzählen?

Andy Bosch: Ja gerne. Ein großes Highlight ist sicherlich das Konzept von FacesFlows. Die Ideen dahinter sind zunächst nicht spektakulär neu, sondern entstammen aus Open-Source-Initiativen und Frameworks wie Spring Web Flow oder ADF Task Flows. Man hat sich im Vorfeld sehr genau die existierenden Lösungen angeschaut und versucht, die besten Ansätze in einen Standard zu kippen. Letzten Endes geht es darum, wiederverwendbare und in sich geschlossene Seiten-Flows zu bauen. Ein typisches Anwendungsgebiet sind Wizards, die eine in sich geschlossene Abfolge von Seiten haben und eventuell innerhalb dieses Ablaufs eigene Daten (also Beans) benötigen. Im Zusammenhang mit diesen Flows wird auch ein neuer Scope – der FlowScope – eingeführt, der sich nahtlos in das gesamte Konzept integriert.

Ein weiteres wichtiges Feature ist die „Cross-site Request Forgery Protection“. Das hört sich komplizierter an, als es eigentlich ist. Kurz gesagt geht es darum, die Sicherheit von Webanwendungen zu verbessern. Es darf nicht möglich sein, dass z. B. durch eingeschleusten Schadcode ein Request abgesetzt wird, der nicht von der eigentlichen JSF-Anwendung initiiert wurde. Hier war JSF in der Vergangenheit schon sehr gut positioniert, existiert in jeder gerenderten View ein javax.faces.ViewState-Hidden-Feld. Mithilfe von ProtectedViews wird dieser State künftig verschlüsselt, um ein höheres Maß an Sicherheit zu erreichen.

In der Liste der „Big Ticket Features“ taucht ebenfalls das „Laden von Facelets über den ResourceHandler“ auf. Es wird hierfür das API im ResourceHandler ein wenig erweitert. Auch wichtig in diesem Zusammenhang ist zu wissen, dass mit 2.2 eine eigene FaceletFactory definiert werden kann. Das ist jetzt nicht unbedingt eine umwälzende Neuerung. Vielmehr wird hier ein Fehler aus der JSF-2.0-Version beseitigt, bei der es nicht möglich war, konfigurativ oder programmatisch eine eigene FaceletFactory für die Erzeugung von Komponenten zu verwenden. Wichtig ist hier mehr die Botschaft zwischen den Zeilen. Bei JSF wird extrem viel Wert darauf gelegt, dass es an allen Ecken und Enden erweiterbar und anpassbar ist. Sei es, wenn man einen eigenen Navigation-Handler erzeugen oder einen spezifischen ExceptionHandler im Framework registrieren möchte. Durch die Möglichkeit, eine eigene FaceletFactory implementieren zu können, ist man hier dann insgesamt wieder „sauber“.

Eine neue Standardkomponente in JSF wird endlich ein FileUpload sein. In der Vergangenheit gab es solche Komponenten schon in verschiedensten Ausprägungen, je nachdem, welche zusätzliche Komponentenbibliothek man mit im Projekt inkludiert hatte. Jetzt hat man endlich im JSF-Standard bereits die Möglichkeit, einen Fileupload zu realisieren. Der JSF-Fileupload nutzt hier die Basis, die mit Servlet Version 3 gelegt wurde. Es wird beim Upload in einem Managed Bean ein javax.servlet.http.Part-Objekt bereitgestellt, an dem ein Stream abgeholt werden kann. Eine sehr schön in die übrige EE-Welt integrierte Lösung.

Last but not least kommt noch ein Konzept von Multi-Templating dazu. Wobei ich hier genauer sagen sollte: kommt vielleicht dazu. Speziell über dieses Feature wird aktuell noch sehr stark diskutiert. Es wird vermutlich eher so sein, dass eine vereinfachte Version davon in JSF 2.2 reinrutschen wird, die zunächst etwas mehr Flexibilität in der Verwendung von View-Templates mit sich bringt. Hier werden aber die nächsten Wochen mehr Klarheit bringen.

JAXenter: Du hast auf den JAX-Konferenzen nun schon mehrere Male den JSF Day moderiert – und so auch bei der kommenden JAX 2013. Was sind deine Erfahrungen? Mit welchen Fragen kommen die Teilnehmer auf dich zu?

Andy Bosch: Ein Großteil der Fragen betrifft natürlich die neuen Features in JSF 2.2. Doch man merkt deutlich, dass JSF in vielen Firmen bereits etabliert und das Niveau der Fragen sehr hoch ist. Es geht somit mehr um konkrete Probleme, die in der täglichen Arbeit mit JSF auftreten. Interessant ist auch, dass doch schon sehr viele auf dem neuesten JavaEE-Standard sind und über einen Software-Stack bestehend aus JSF, CDI und JPA verfügen. Daher war auch die Session über JSF und CDI innerhalb des JSF Day noch ein wichtiger Impulsgeber.

Für viele Teilnehmer war auch die Vision wichtig, was JSF für den mobilen Bereich anzubieten hat. In meiner Session am Vortag des JSF-Days habe ich verschiedene Ansätze aufgezeigt, mobile Webanwendungen mit JSF zu bauen. Im Umfeld des mobilen Webs kommen verständlicherweise verstärkt JavaScript und JavaScript-Frameworks zum Einsatz. Daher waren auch viele Fragen darunter, wie sich JSF mit diesen Technologien kombinieren lässt. In diesem Zusammenhang wird auch gerne nachgefragt, ob JSF sich mit JavaScript gut versteht oder das eher Konkurrenten sind. Hier konnte ich die Teilnehmer natürlich beruhigen, dass sich JavaScript auf der Clientseite sehr harmonisch mit JSF verheiraten lässt.

Kommentare

Schreibe einen Kommentar

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