JSF und Struts auf dem Leistungsprüfstand

Bewertung der Ergebnisse

Die beiden JSF-Implementierungen sind im Prinzip ebenbürtig, was die Verarbeitungszeit angeht. MyFaces kann aber deutliche Vorteile in Bezug auf den Speicherverbrauch verbuchen. Wie bereits erwähnt, ist die aufwändige Verwaltung des ViewStates in RI ab Version 1.2 ein Grund für den erhöhten Speicherverbrauch. Allerdings schlägt dieses Argument nicht zu Buche, wenn man die Werte für nur eine Seite in einem Fenster betrachtet. Aber auch hier ist MyFaces um ein Vielfaches sparsamer.

Wie nicht anders zu erwarten, geht der erste Platz in unserem Performance-Vergleich an Struts. Dank seiner vergleichsweise „flachen“ Architektur kann das Framework in Bezug auf Performance punkten. Die Verwaltung des Komponentenbaums und die damit verbundene Erzeugung, Verwaltung und Entfernung von Objekten ist der Hauptgrund für die längeren Verarbeitungszeiten bei JSF. Allerdings fallen speziell bei aktueller Hardware die zeitlichen Differenzen in den Bereich von einigen Hundertstelsekunden. Dieser marginale Unterschied ist im Prinzip am Bildschirm für den Benutzer nicht zu bemerken. Bedeutet dies wiederum, dass die Performance kein Argument für oder gegen JSF ist und dass Nachteile im genannten Rahmen keine Rolle spielen? Zweimal Nein. Speziell bei Hochlastsystemen genießt die Geschwindigkeit eine exponierte Rolle. Ist der zeitliche Rahmen für einen Request-Response-Zyklus vom Auftraggeber auf eine Sekunde gesteckt, wie es bei vielen Callcenter-Anwendungen der Fall ist, bedeutet ein Performance-Nachteil von nur 150ms bereits, dass 15 Prozent der Gesamtzeit „verschwendet“ wurden.

Gegenmaßnahmen

Es stellt sich die Frage, welche Möglichkeiten der Entwickler hat, eine Webanwendung so zu gestalten, dass unnötig lange Wartezeiten vermieden werden. Allein mit auf Performance ausgelegtem Oberflächen-Design kann man schon eine Menge erreichen. Speziell bei großen Tabellen dient dies auch der Ergonomie der Anwendung, dient die komplette Anzeige einer großen Tabelle mit mehreren hundert Zeilen in den seltensten Fällen der Übersichtlichkeit. Besonders JSF bietet hier Komponenten, die Daten über so genanntes Paging darzustellen. Dabei wird in der Tabelle immer nur ein Ausschnitt von beispielsweise zehn Zeilen angezeigt. Die Darstellung der Tabelle wird durch die Paging-Komponente um zusätzliche Navigationsmöglichkeiten angereichert (Abb. 5).

Abb. 5: Beispiel für eine Tabelle mit Paging (Quelle: www.myfaces.org)

Des Weiteren kann eine Vorauswahl der darzustellenden Daten durch den Benutzer erfolgen. So wird von vornherein die Anzahl der Tabellenzeilen reduziert. In einigen Fällen kann die Verteilung von Komponenten auf mehrere Seiten vorteilhaft sein. Dieses Vorgehen zielt allerdings auf das subjektive Empfinden des Anwenders ab, da hier die Darstellung nicht nur auf mehrere Seiten, sondern auch auf mehrere Request-Response-Zyklen verteilt wird. Somit geht es hier letztlich um eine Verteilung der Wartezeit. Aber auch auf technischer Ebene lässt sich die Performance zum Beispiel durch den Einsatz von AJAX verbessern.

Fazit

Auch wenn JSF im Laufe seiner Entwicklung in Sachen Performance zugelegt hat, ist es Struts in dieser Hinsicht immer noch unterlegen. Dies ist aber auch zu erwarten, ist dies doch der Tribut, welcher für den höheren Abstraktionsgrad von JSF gezahlt werden muss. Mitnichten bedeutet dies allerdings, dass JSF nicht konkurrenzfähig ist. Bei einer unter ergonomischen Gesichtspunkten erstellten Webanwendung lassen sich speziell bei aktueller Hardware in vielen Fällen die zeitlichen Unterschiede zu Struts nur noch messen, vor dem Bildschirm sind sie oft nicht zu bemerken. Bei der Auswahl des Web-Frameworks gilt es also zunächst zu ermitteln, was für die Anwendung wertvoller ist: das Rich-Client-ähnliche Programmierparadigma von JSF und die Menge an vorgefertigten Oberflächen-Komponenten, die speziell MyFaces bietet, oder aber die schlichte Performance zur Laufzeit.

Roman Schlömmer ist als Senior Consultant bei der Unternehmensberatung Holisticon in Hamburg tätig und beschäftigt sich mit der Architektur und Entwicklung verteilter Systeme, insbesondere auf Basis von Java EE.

Dipl.-Wirt.Inf. (FH) Malte Geßner arbeitet als IT-Consultant bei der Unternehmensberatung Resco in Hamburg. Dort beschäftigt er sich hauptsächlich mit der Architektur und Entwicklung verteilter Systeme, insbesondere auf Basis von Java EE.

Zu dem Artikel können Sie hier den Quellcode als zip-Datei downloaden.

Kommentare

Schreibe einen Kommentar

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