Seit dem 5. Juni 2007 gibt es einen offiziellen JSR (Java Specification Request), der die Nummer 314 trägt. Bereits in der Vergangenheit wurde viel über das Gesicht der nächsten JavaServer Faces Generation gesprochen und geschrieben, wie beispielsweise in WebBlogs von Personen, wie Ed Burns oder Kito D. Mann.
Erstes Treffen - Erste Features
Das erste Treffen der EG (Expert Group) fand während der JavaOne 2007 statt, bei dem sogar Sun's CEO Johnatan Schwartz vorbeischaute. Neben namhaften "Szene"-Firmen, wie Oracle, ICESoft oder JBoss ist interessanterweise auch Tapestry-Entwickler Howard Lewis Ship in der EG vertreten. Ziel dieses ersten Treffens war, grob die neuen Features von JSF 2.0 zu sortieren, was mit einem Buy-a-Feature-Spiel geschah. Auf der Liste standen Themen, wie z.B. Facelets, CSS-Skinning à la Trinidad, Annotations und auch selbstverständlich AJAX. Der Gewinner war AJAX, wen wundert das im Jahr 2007? Aber auch Facelets schnitt gut ab und belegte mit anderen Themen, wie beispielsweise einem besseren Annotation-Support, den zweiten Platz im Spiel, womit die wichtigsten neuen Features grob bestimmt wurden.
Auf der JSR-Website sind allerdings noch weitere Themen aufgelistet, wie JSF 2.0, das wohl mit der Java EE 6 Version erscheinen soll. Das Ziel dieses JSRs ist simple: die besten Ideen von Anfang 2007 in die Java-EE-basierte Web-Entwicklung zu integrieren. Dabei soll die Komplexität minimiert und die Produktivität maximiert werden. Themen wie Persistenz (via Java Persistence API), CRUD/Kommandozeilen-Werkzeug für JSF-Anwendungen oder auch einer Standardisierung eines neuen Scope, der zwischen Request und Session liegt. Diese Themen sind eher als Randthemen einzuordnen, sollen sie doch ebenfalls vom WebBeans-Standard realisiert werden, wobei ein Faces à la Rails (out of the box) nett wäre!
Was kommt?
AJAX in JSF 2.0 wird wohl nicht dahin gehen, dass Drag-and-Drop à la Dojo Toolkit direkt mit JSF 2.0 verfügbar ist. Vielmehr geht es hier darum, das Framework/den Lifecycle zu erweitern und eine Client-seitige API für einen (JSF-)Lifecycle auf dem Client zu liefern/spezifizieren. Facelets wird ebenfalls nicht 1:1 in JSF 2.0 eingebaut. Vielmehr geht es um die Integration von JSF-Templating-Ideen aus Shale Clay und Facelets oder gar Tapestry. Vielleicht wird ja auch ganz auf JSP verzichtet? Wohl eher nicht. Deklarative Komponenten/Renderer sind ebenfalls für JSF 2.0 vorgesehen. Immer wieder tauchen hier und da Lösungen auf, die es vermeiden, eigene Java-basierte Renderer für JSF zu schreiben, da diese stark an Servlets erinnern. Auch stellt hat das Facelets Framework einige Ideen bereit, deren Realisierung JSF 2.0 gut stehen würde. Für die Validierung in JSF 2.0 wird wohl auf den JSR 303 zurückgegriffen.
Ein weiteres Feature, auf dessen Realisierung man hoffen darf, ist zero configuration. Frameworks wie Apache Wicket - dessen Entwickler nicht an der JSF EG teilnehmen - kommen schon heute ohne eine Framework-spezifische XML-Datei (faces-config.xml im Fall von JSF) aus. JSF 2.0 will zusätzlich die Notwendigkeit der web.xml eliminieren. Für kleinere, einfache Anwendungen sicherlich nicht falsch. Frameworks wie Grails oder Ruby on Rails erfüllen diese Anforderung ebenfalls. Der JSR listet ebenfalls auf, dass die Komponenten Ereignisse via RSS/Atom veröffentlichen oder das JSF 2.0 auch RESTful (JSR 311) wird. Nicht zuletzt aus dem Grund, um mehr (Java-/Web-)Entwicklern einen Zugang zu JavaServer Faces zu bieten. Leider listet der JSR auch neue Komponenten, wie Baum, Kalender oder Upload als neue Features auf. Uploads sollten doch eher von der Servlet 3.0 Spezifikation adressiert werden, da hier nicht nur JSF, sondern auch andere Web-Frameworks, einen großen Nutzen hätten.
Was fehlt in JSF 2.0?
Der JSR mit seinen aktuellen Anforderungen an ein neues JSF sieht gut aus. Die Realisierung wird sicher einige Zeit benötigen und bis dann gibt es vermutlich neuere Ideen, die hier fehlen. Ein Standard ist aufgrund seiner Natur schon langsamer als properitäre Frameworks. Die Open-Source-Gemeinschaft wird sicher Extensions anbieten. Die JSR-Website verspricht, dass bereits im Oktober 2007 ein erstes öffentliches Review der Spezifikation erfolgen soll. Bis dahin warten wir gespannt und hoffen, dass wirklich alles gut wird.
Matthias Weßendorf arbeitet für die Oracle Corp. an ADF Faces Rich Client und Apache MyFaces Trinidad. Seit 2004 ist er PMC von Apache MyFaces. Matthias hat an verschiedenen internationalen Konferenzen als Redner teilgenommen. Derzeit ist er Repräsentant der Apache Software Foundation im JSR 299 (Web Beans).


















