- Java Server Faces
-
JavaServer Faces (kurz: JSF) ist ein Framework-Standard zur Entwicklung von Benutzeroberflächen für Webapplikationen. Basierend auf Servlets und JSP-Technologie, gehört JSF zu den Webtechnologien der Java Platform, Enterprise Edition (Java EE). Mit Hilfe von JSF kann der Entwickler auf einfache Art und Weise Komponenten für Benutzerschnittstellen in Webseiten einbinden und die Navigation definieren.
Inhaltsverzeichnis
Komponenten
Der Programmierer entwickelt nicht die Ausgabeseite mit HTML, sondern setzt sie auf einem höheren Abstraktionsniveau aus Komponenten zusammen. Ähnlich wie bei der klassischen Anwendungsentwicklung kann sich der Entwickler stattdessen auf die eigentliche Anwendungslogik konzentrieren. Um die Anwendung besser zu strukturieren, wird strikt zwischen „Modell“, „Ausgabe“ und „Steuerung“ getrennt, wie es das Model-View-Controller-Konzept vorsieht.
Ein zentrales Konzept von JavaServer Faces ist die View. Dabei handelt es sich um eine Baumstruktur aus JSF-Komponenten. Eine solche Struktur kommt genau einmal pro Aufruf vor, bei Verwendung von JavaServer Pages (JSP) also einmal pro Seite. Die View wird am Anfang des JSF-Lebenszyklus aufgebaut, direkt nach Eintreffen der Anforderung vom Client. In der letzten Phase des Lebenszyklus werden die Komponenten der Views mit der Wurzel beginnend rekursiv aufgerufen, um die Antwort, beispielsweise eine HTML-Seite, zu erzeugen.
Lebenszyklus
Die Spezifikation der JavaServer Faces definiert einen sogenannten Lebenszyklus, den eine JSF-Anwendung mit jedem Aufruf erneut durchläuft. Dieser Lebenszyklus ist in sechs Phasen aufgeteilt.
- Restore View („Sicht wiederherstellen“) wählt anhand der eingehenden Anforderung eine Sicht (View) aus und baut den dazu passenden Komponentenbaum auf.
- Apply Request Values („Anforderungsparameter anwenden“) extrahiert Parameter aus der Anforderung (üblicherweise ein HTTP-Post-Request) und weist sie den passenden JSF-Komponenten zu, beispielsweise Eingabefeldern.
- Process Validations („Validierung ausführen“) überprüft die Gültigkeit der zuvor ermittelten Eingaben. Dazu werden eigene Validator-Objekte verwendet, die den Komponenten in der View-Definition zugewiesen wurden.
- Update Model Values („Modell aktualisieren“) weist den Modellobjekten die zuvor ermittelten Werte zu.
- Invoke Application („Anwendung aufrufen“) ruft durch die Anwendung definierte Methoden auf, beispielsweise wenn ein Button betätigt wurde.
- Render Response („Antwort wiedergeben“) erzeugt schließlich die Antwort auf die ursprüngliche Anfrage, beispielsweise eine HTML-Seite. Hierzu werden sogenannte Renderer aufgerufen, die den View-Komponenten zugeordnet sind.
Treten Fehler auf, oder soll als Antwort beispielsweise eine HTML-Seite aufgerufen werden, die keine JSF-Komponenten enthält, so können einzelne Phasen übersprungen werden.
Frameworks
Es ist möglich eine auf JSF basierende Webanwendung mit Ajax-Funktionalität zu erweitern, dazu existieren verschiedene Frameworks wie z.B.:
- ICEfaces von ICEsoft
- RichFaces von Red Hat (ehemals Exadel)
- Ajax4jsf von Red Hat (ehemals Exadel)
- Trinidad von der Apache Software Foundation
- J4Fry Ajax
- xulfaces unterstützt das Erstellen von XUL-GUIs
Standardisierung
Die JSF-Spezifikation wurde im Rahmen des Java Community Process JSR 127 von einer Reihe bekannter Unternehmen entwickelt und am 27. Mai 2004 in der Version 1.1 verabschiedet. Am 11. Mai 2006 wurde die derzeit aktuelle Version 1.2 (JSR 252) veröffentlicht.
Neben der Referenzimplementierung von Sun existieren freie (z. B. Apache MyFaces) und kommerzielle Implementierungen des Standards. Verschiedene Unternehmen vermarkten standardkonforme Oberflächenkomponenten (z. B. Oracle ADF Faces) oder bieten grafische Entwicklungswerkzeuge an.
JavaServer Faces umfasst:
- Eine Tag-Bibliothek zur Einbindung der JSF-Oberflächenkomponenten in JavaServer Pages oder in einem Facelet.
- Eine Java-API zur Kontrolle von Bedienelementen der Benutzerschnittstelle. Dies schließt auch die Behandlung von Ereignissen, die Validierung der Eingabe, Navigation und Unterstützung für Internationalisierung mit ein.
Einsatz
JavaServer Faces will letztlich eine einfache Möglichkeit bieten, leistungsfähige Webanwendungen zu schreiben, ohne dass man sich zu viele Gedanken über die Komplexität einer Webanwendung (Zustand über zustandsloses Protokoll, Request, Response, …) machen muss. Bei der Entwicklung soll es auch einem Programmierer einer Desktopanwendung erleichtert werden, Webanwendungen zu schreiben. Da große Firmen an der Spezifikation mitgearbeitet haben, wird JavaServer Faces faktisch zum Standard.
In der Breite konnte es sich aber immer noch nicht durchsetzen. Das liegt unter anderem auch daran, dass JavaServer Faces seinen Ansprüchen nicht ganz gerecht wird. So muss der Programmierer viele Techniken beherrschen, unter anderem HTML, CSS, JavaScript, XML, Apache Tomcat, eine Expression Language, und JavaServer Pages. Zusätzlich muss man für eine Änderung mehrere Dateien in unterschiedlichen Verzeichnissen bearbeiten (XML-Konfiguration des Servlet-Containers, Navigationsregeln, JSP-Datei). So gibt es auch mehrere Produkte, die JavaServer Faces Konkurrenz machen wollen, zum Beispiel die Frameworks Wicket und Tapestry.
Siehe auch
Weblinks
Wikimedia Foundation.