19.01.2014 Aufrufe

Ausgabe Frühjahr 2013 - Gedoplan

Ausgabe Frühjahr 2013 - Gedoplan

Ausgabe Frühjahr 2013 - Gedoplan

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

fert werden, um einen Bereich zu aktualisieren, findet der Austausch<br />

bei Vaadin mit Hilfe der Frameworkeigenen UIDL, welche auf JSON<br />

Basis realisiert ist, statt. Mit Hilfe dieser UIDL ist es möglich, die<br />

Informationen in einer deutlich kompakteren Form auszutauschen.<br />

Optimierung Vaadin<br />

Ein extrem großer Teil des Datenverkehrs wird allein von der JavaScript-Engine<br />

und insbesondere dem sogenannten Widgetset,<br />

welches die Clientseitige Implementierung der Oberflächenkomponenten<br />

beinhaltet, verursacht. Um also die Netzwerklast einer Vaadin-Anwendung<br />

zu reduzieren, kann es sinnvoll sein, das Widgetset<br />

noch einmal mit dem GWT-Compiler zu übersetzen. Mit Hilfe einer<br />

eigenen BundleLoaderFactory kann für die einzelnen Komponenten<br />

festgelegt werden, ob diese sofort bei Anwendungsstart oder „lazy“<br />

im Programmverlauf geladen werden sollen. Wenn nur die Widgets,<br />

die auch wirklich in der Anwendung benötigt werden, für das Eager-<br />

Loading gekennzeichnet sind, so reduziert sich die Größe des Widgetsets<br />

deutlich. Bei der hier vorgestellten Testanwendung konnte<br />

eine Reduktion von ca. 1 MB auf gut 600 KB erzielt werden. Insgesamt<br />

belief sich das Datenvolumen bei 100 Durchläufen nun nur<br />

noch auf 101,17 MB gegenüber den vorher gemessenen 140,52 MB.<br />

Optimierung JSF<br />

Hier ist kein so offensichtlicher Optimierungsansatz gegeben. Sicher<br />

würde die Anwendung anfänglich weniger Daten laden müssen, würde<br />

man auf Primefaces verzichten, allerdings stände dann auch bei<br />

weitem nicht der Funktionsumfang, wie er von Vaadin geboten wird,<br />

zur Verfügung. Eine Möglichkeit, die Datenlast etwas zu senken,<br />

bestünde darin, auf das Navigieren mit Redirect zu verzichten und<br />

dafür zu sorgen, dass bei Seitenwechsel auch nur der Inhaltsbereich<br />

per AJAX ausgetauscht wird, was dann allerdings erst einmal den<br />

Verzicht auf Bookmarkable-URLs nach sich ziehen würde.<br />

Optimierung Allgemein<br />

Um für eine deutliche Absenkung der zu übermittelnden Datenmenge<br />

zu sorgen, können die Seiteninhalte auch in gzip-komprimierter<br />

Form an den Client ausgeliefert werden, sofern dieser das unterstützt.<br />

Mit Hilfe der Datenkompression ist es gelungen, das gesamte<br />

übertragene Datenvolumen, das in dem Testszenario angefallen ist,<br />

im Falle von JSF auf 58,25 MB und bei der optimierten Vaadin-Anwendung<br />

auf 36,92 MB zu drücken.<br />

Überblick Datenmenge mit und ohne Optimierung:<br />

Datenvolumen<br />

Vaadin 140,52<br />

JSF 178,20<br />

Vaadin optimiert 101,17<br />

Datenvolumen<br />

durchschn. Paketgröße 58,25<br />

Vaadin optimiert + GZIP 36,92<br />

Fazit<br />

Vaadin hat in diesem Testszenario eine geringere Netzwerklast verursacht<br />

als JSF, was hauptsächlich über den AJAX-gestützten Seitenwechsel<br />

und die UIDL, für den Informationsaustausch zwischen<br />

Server und Client, zu erklären ist. Allerdings kann daraus natürlich<br />

nicht allgemeingültig geschlossen werden, dass Vaadin-Programme<br />

immer einen Vorteil in dieser Hinsicht gegenüber JSF-Anwendungen<br />

haben. Schon allein der Einsatz einer anderen Komponentenbibliothek<br />

für JSF oder das Implementieren einer AJAX-gestützten Navigation<br />

könnten hier für einen großen Unterschied sorgen. Auch über<br />

Nutzung eines anderen Themes könnte die Menge und Größe der zu<br />

übertragenden Dateien beeinflusst werden.<br />

Auffällig war vor allem bei Vaadin, dass der bei weitem größte Teil<br />

der Datenmenge allein von dem anfänglichen Laden der Anwendung<br />

herrührt. Das ist insofern interessant, als im Allgemeinen davon ausgegangen<br />

wird, dass es sich bei der Datenlast, die durch das Verarbeiten<br />

aller Aktionen auf dem Server entsteht, um einen der großen<br />

Nachteile dieses Frameworks handelt. Natürlich ist bei solch einer<br />

AJAX-gestützten Vorgehensweise die Anzahl der Anfragen an den<br />

Server insgesamt größer, die Datenmengen, die dabei entstehen, fallen<br />

allerdings wohl verhältnismäßig gering aus.<br />

Es bleibt also festzuhalten, dass die Serverseitige Steuerung, die Vaadin<br />

und JSF zu Grunde liegt, nicht unbedingt zu einer unverhältnismäßig<br />

hohen Datenmenge führen muss. Daten für den Aufbau von<br />

Seiten/Views und Styles sowie natürlich auch die in der Anwendung<br />

darzustellenden und zu verarbeitenden Daten müssen bei jeder Webanwendung<br />

zwischen Client und Server ausgetauscht werden. Wobei<br />

es natürlich sehr schwer ist, hier allgemeine Aussagen diesbezüglich<br />

zu treffen. Wenn man z. B. bei einer Webanwendung davon ausgeht,<br />

dass diese von den Benutzern nur einmal am Tag geladen wird und<br />

anschließend zehntausende verschiedene Aktionen darauf ausgeführt<br />

werden, dann fällt natürlich auch irgendwann das Übertragen<br />

jeweils kleiner Datenmengen (z. B. Validierung eines einzelnen Wertes)<br />

stärker ins Gewicht.<br />

Zur Optimierung von Webanwendungen empfiehlt es sich auf jeden<br />

Fall, diese auch mit GZIP-Encoding anzubieten, da dies vor allem bei<br />

den großen JavaScript-/CSS-/XML-/JSON-Dateien zu einer erheblichen<br />

Reduktion des Datenvolumens führen kann.<br />

Hendrik Jungnitsch [hendrik.jungnitsch@gedoplan.de ]<br />

Entwickler und Trainer im Bereich Java bei der <strong>Gedoplan</strong> GmbH. Sein Tätigkeitsschwerpunkt<br />

ist das Realisieren von Java-EE-basierten Webanwendungen.<br />

10

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!