Kolumne: EnterpriseTales

Butter bei die Fische: Das JSF-Framework ButterFaces

Lars Röwekamp
Enterprise Tales

Seit der Version 2.2 bietet JSF erweiterten HTML5-Support. Dank Pass-through Attributes zum Durchreichen von in JSF bisher nicht gerenderten HTML5-Attributen – wie placeholder oder type – und Pass-through Elements, die eine direkte Verwendung von HTML5 erlauben, ist JSF 2 damit deutlich näher an das „Modern Web“ gerückt, als noch in den vorherigen Versionen. Was aber, wenn Frameworks wie Bootstrap und jQuery ins Spiel kommen, um Responsive Design zu realisieren? Hier hilft eine Lösung aus dem hohen Norden: ButterFaces.

Eigentlich hatte ich mir ja fest vorgenommen, zukünftig keine APIs oder Frameworks mehr im Rahmen der EnterpriseTales vorzustellen. Vielmehr wollte ich die monatliche Kolumne dazu nutzen, die eine oder andere Diskussion aus meinem IT-Alltag in die Community zu tragen und dort weiter voranzutreiben. Manchmal gibt es aber diese Momente, in denen einem Dinge über den Weg laufen, die einfach nicht unerwähnt bleiben sollten. So auch im Falle des JSF-Frameworks ButterFaces.

Modern, aber nicht Modern Web

Zugegeben, die Jungs aus der JSF Expert Group haben sich in der Version 2.2 einiges einfallen lassen, um den Anschluss an HTML5 und Friends nicht zu verlieren. Was bisher lediglich mit proprietären JSF Renderern möglich gewesen ist, nämlich die Verwendung von HTML5-spezifischen Attributen, wie placeholder, type oder data-*, liefert JSF mittlerweile out of the box. Mithilfe der Pass-through Attribute lassen sich unbekannte HTML-Attribute innerhalb von JSF-Tags bis zum Rendering durchschleifen. Noch einfacher geht es mit den Pass-though Elements, die aus einem HTML5-Tag durch das Einfügen eines einfachen jsf:id-Attributs on the fly ein JSF-Element machen.

So weit, so gut. Unschön wird es allerdings nach wie vor immer dann, wenn neben reinem HTML5 noch weitere Frameworks ins Spiel kommen, um so Responsiveness im Design zu ermöglichen – also eigentlich fast immer. Denn es gibt wohl kaum eine moderne Webanwendung, die sich das Zauberwort Responsive Design auf die Fahne schreibt und dabei nicht auf Frameworks wie Bootstrap und jQuery zurückgreift.

YAF?

Genau hier setzt das Framework ButterFaces der beiden Entwickler Lars Michaelis und Stephan Zerhusen an. Yet another (JSF) Framework, mag sich jetzt der eine oder andere Leser fragen. Gibt es denn davon nicht eh schon mehr als genug? Eigentlich schon. Allerdings keines bzw. kaum eines, dass sich zum Ziel gesetzt hat, die aktuell in der Webentwicklung mehr als angesagten Frameworks Bootstrap und jQuery auf einfachste Art und Weise mit JSF 2 zu verbinden.

Der Trick dabei ist, dass ButterFaces nicht versucht, für jede Bootstrap-Komponente einen eigenen JSF Wrapper zu bauen, sondern sich lediglich auf diejenigen Komponenten fokussiert, bei denen der Wrapper einen wirklichen Mehrwert bringt. So haben zum Beispiel alle Eingabekomponenten eine Read-only-Ansicht, sowie einen Tooltip und Attribute zur direkten Einbindung von Ajax und Validierung.

Neben Eingabeelementen, wie text, maskedtext, markdown oder tags, existieren weitere sinnvolle Komponenten für Container, Dateniteration und Actions. Darüber hinaus gibt es noch eine ganze Reihe kleiner, sehr nützlicher Helferlein zum Generieren und Anzeigen von Dialogen, Tooltips und Messages. Besonders gut gelungen ist meiner Meinung nach übrigens die treeBox-Komponente. Am besten einfach einmal selbst einen Blick riskieren.

Alle anderen Bootstrap-Komponenten, wie Navbar oder Jumbotron, können ganz normal verwendet werden und blähen so den JSF-Komponentenbaum nicht unnötig auf. Ein kleines aber dennoch zur Laufzeit sehr wichtiges Detail, wenn es am Ende um das Thema Performance geht.

ButterFaces kommt mit nur einigen wenigen MBs, im Vergleich zu anderen JSF-Frameworks, extrem leichtgewichtig daher. Für das Einbinden in das eigene JSF-Projekt wird lediglich eine Maven Dependency benötigt. Die Angabe weiterer CSS oder JS Libraries ist nicht notwendig, da ButterFaces alle notwendigen Bestandteile von Bootstrap und jQuery bereits enthält.

Ready for Production?

Das Framework ist, zumindest was die Versionsnummer angeht (Version 1.10), deutlich über die Betaphase hinaus. Gleiches gilt für die wirklich gute Dokumentation, sowie die im Web vorhandenen Showcases für die einzelnen Komponenten. Laut Michaelis wird das Framework bereits produktiv bei Kunden eingesetzt. Allerdings sind aktuell noch vier der knapp dreißig Komponenten direkt von der JSF-Implementierung abhängig, unterstützt wird die Referenzimplementierung Morjarra. Michaelis und Zerhusen sind allerdings zuversichtlich, dass sie diese noch im ersten Quartal 2016 auflösen werden.

Fazit

Alles in allem macht das JSF-Framework ButterFaces bereits in der doch noch recht frühen Version 1.10 einen wirklich guten Eindruck. Was besonders positiv ins Auge fällt, ist die geringe Größe der Library, sowie die Tatsache, dass die Autoren nicht der Versuchung erlegen sind, einen reinen Bootstrap Wrapper für JSF zu entwickeln. Das kleine Handicap der direkten Abhängigkeit einiger Komponenten zur Referenzimplementierung Morjarra sollte spätestens mit Erscheinen der Version 2.0 Geschichte sein. Es soll natürlich an dieser Stelle nicht verschwiegen werden, dass es neben ButterFaces auch andere JSF-Frameworks gibt, die einen ähnlichen Ansatz fahren. So zum Beispiel BootsFaces, das derzeit allerdings erst in einer Version 0.81 vorliegt und somit sicherlich noch das eine oder andere Problem in puncto Stabilität mit sich bringen dürfte.

Ein kleiner Tipp am Rande an die Autoren des Frameworks: Die Idee, die hinter dem Namen ButterFaces steckt – „butter is delicious, everything is better with butter“ – ergibt sicherlich hierzulande Sinn. Im amerikanischen Sprachgebrauch dagegen steht „butter face“ auch für „but her face“ und bezeichnet ein Mädchen, dessen Gesicht vorsichtig gesagt nicht ganz so hübsch ist wie der Rest ihres Körpers. Diese Analogie hilft zwar, sich den Namen des Frameworks leicht zu merken, ein politisch etwas korrekterer Name würde dem Framework aber sicherlich auch nicht schaden. In diesem Sinne: Stay tuned …

Geschrieben von
Lars Röwekamp
Lars Röwekamp
Lars Röwekamp ist Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen seiner Tätigkeit als „CIO New Technologies“ mit der eingehenden Analyse und Bewertung neuer Software- und Technologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile Computing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung stehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit dieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler Projekte sammeln konnte.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: