FacesTales: Rich Web GUIs

Neue Trends stellen den Anwendungsentwickler immer wieder vor die Tatsache, dass seine Webanwendung in regelmäßigen Abständen überarbeitet werden muss, um „auf dem Laufenden“ zu bleiben. In der Regel sind diese Änderungen eher nicht funktional, sondern rein technisch, wie beispielsweise die Hinzunahme von Ajax. Allerdings macht das Benutzen einer Ajax-basierten (Web-)Anwendung mehr Freude, bietet sie dem Benutzer doch eine bessere Interaktion!

Hallo, Ajax !

Mit dem ersten Aufkommen von Ajax Ende 2004/Anfang 2005 standen viele Entwickler vor dem Problem, diese neue Technik unbedingt einsetzen zu müssen. Diverse JavaScript-Bibliotheken, z. B. jQuery, wurden in die Webseiten integriert und es wurde versucht, diese neuen Möglichkeiten irgendwie mit den JSF-Standard-„Tags“ zu kombinieren. Oft vergeblich. Heute ist Ajax ein fester Bestandteil einer jeden modernen JSF-Bibliothek, z. B. Apache MyFaces Trinidad oder IceFaces. Der Anwendungsentwickler muss sich nicht mehr selbst um die technischen Details der Ajax-Integration kümmern; Ajax ist ein Teil des genutzten JSF-Frameworks, genauer gesagt, ein fester Bestandteil des RenderKits. Mit JSF 2.0 bekommt Ajax den Ritterschlag und ist damit fest in der Spezifikation verankert. Ohne Ajax geht dann (fast) nichts mehr.

RIA – mehr Anwendung als Web?

Ajax bringt enorme Vorteile beim Erstellen von interaktiven Webanwendungen. Interaktivität ist gut, aber auch die Web-GUIs sollen „sexy“ daherkommen. Mit schlichtem HTML kann man schon lange keinen Benutzer/Kunden mehr hinter dem Ofen hervorlocken. Derzeit wird vermehrt die Umsetzung von „Rich Internet Applications“ (RIA) diskutiert. Unter RIA versteht man eine Webanwendung, die einer herkömmlichen Desktopanwendung in nichts nachsteht. Dabei geht es nicht nur um das „Look-and-Feel“ der Anwendung, sondern auch um die Bedienbarkeit. Ein geschulter Benutzer will das GUI nicht nur über die Maus bedienen, sondern auch mithilfe der geliebten Shortcuts. Nicht nur Emacs-Benutzer verstehen das. Ein Beispiel für eine solche RIA zeigt Abbildung 1, die mithilfe von Oracles ADF Faces erstellt wurde. Sichtbar sind eine Baumstruktur, eine Tabelle und ein Menü, das dem nativen Windows-Menü recht ähnlich sieht. Interessant ist hier, dass das Menü sich mit Shortcuts bedienen lässt, wie es jeder von den nativen Anwendungen seines PCs (oder MAC) kennt.

Abb. 1

Abstraktion durch JSF …

Ein großer Vorteil von JSF ist sein deklarativer Ansatz. Bei der Integration von neuen Ansätzen wie Ajax oder RIA muss nicht die ganze Seite aufgebohrt werden. Die Erstellung eines interaktiven Menüs sieht mit ADF Faces ungefähr so aus:

<af:MenüBar> <af:Menü textAndAccessKey="&File" icon="/images/copy.gif"> <af:Menü textAndAccessKey="&New"> <af:commandMenüItem textAndAccessKey="Navigator &Window" accelerator="ctrl N" action="#{bean.myAction}"/> 

Innerhalb einer MenuBar-Komponente wird ein Menü aufgebaut, das beliebig komplex sein kann. Die einzelnen Menüeinträge werden durch die <af:commandMenüItem/>-Komponente realisiert. Wie der Name des Tags bereits vermuten lässt, handelt es sich hier um eine Komponente, die das ActionSource-Interface implementiert. Ein mit JSF vertrauter Entwickler ist sofort in der Lage, diese Komponente zu nutzen. Um eine (serverseitige) Aktion auszulöschen nutzt er, wie gewohnt, das action-Attribut der Komponente. Die intuitive Nutzung neuer Frameworkfeatures ist nicht immer geboten, gerade wenn Anwendungen mit verschiedenen Tools und Frameworks programmiert werden. Jedes dieser Werkzeuge lebt eine eigenständige Philosophie. Bei JSF-Frameworks ist das anders. Sie nutzen die gebotenen APIs und bringen so neue Funktionalität auf einem intuitiven Weg.

Ausblick

Mehr und mehr JSF-Bibliotheken werden das Thema RIA verstärkt angehen oder haben RIA schon längst integriert. Allerdings erstellen Teams (nicht selten) eigene JSF-Komponenten, weil sie für ganz spezielle Anforderungen notwendig sind. Damit ist man nun selbst für die Realisierung von RIA zuständig. Eine gute Ressource für Entwickler von RIAs ist das Buch „Designing Web Interfaces“ [2], es stellt zahlreiche Richtlinien und Muster für die Entwicklung guter RIAs vor. Folgt man beim Programmieren der eigenen Komponenten den „Regeln“ von JSF, so sind auch diese Komponenten von (neuen) Kollegen recht einfach nutzbar!

Kommentare

Schreibe einen Kommentar

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