Jakarta 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 einer Webtechnologie 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.
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.
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 (ICEfaces Open Source Project Website)
- RichFaces von Exadel (RichFaces Website bei JBoss)
- Trinidad von Apache (Apache MyFaces Trinidad)
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 Standard konforme 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.