Get your wingS back!

Wege zurück zur Basis

Einer der zentralen Vorteile Java-orientierter MVC-Web-Frameworks ist, dass sie den Entwickler in der alltäglichen Arbeit vom Umgang mit den technischen Spezifikas und Einschränkungen der Web-Plattform entbinden. Statt mit JavaScript, Ajax, XML, HTML und CSS zusätzliche Hürden in den Weg gelegt zu bekommen, kann er sich voll auf die Qualität und das Design seiner Java-Lösung konzentrieren. Speziell jedoch während der Entwicklung komplexerer Webapplikationen kann es immer wieder zu Detailanforderungen oder Problemstellungen kommen, die eine individuelle Lösung und daher auch einen Durchgriff auf die verwendeten Basis-Technologien verlangen. Spätestens in diesem Moment zeigt sich, ob bei der Wahl der Mittel eine gute Balance zwischen hohem Abstraktionsniveau und guter Beherrschbarkeit der Basistechnologien gelungen ist.

Hier sticht wingS im Feld der Ajax-bewehrten Frameworks besonders hervor. Die geschilderte Architektur des ReloadManagers ermöglicht es jederzeit durch einfaches Neuladen auf die vollständige, generierte HTML-Sicht mitsamt aller eingebundener Skript- und CSS-Dateien zurückzugreifen, was die Entwicklung neuer Komponenten und die Fehlersuche ungemein erleichtert. Auch beim Styling und Layout verleugnet wingS nicht seine Wurzeln. Alle Komponenten tragen bereits von Werk aus eindeutige CSS-Klassen über die sich ihr Look & Feel mittels Stylesheets einfach, mit der Web Developer Toolbar sogar interaktiv an die eigenen Bedürfnisse anpassen lässt. Neben den Swing-Methoden beinhaltet die wingS API auch noch handverlesene Zusatz-Funktionen mit Web-Bezug. Diese erlauben es programmatisch Komponenten jederzeit eigene CSS-Klassen, Attribute oder JavaScript-Listener zuzuweisen. Obwohl wingS alle Swing-Layouts fast vollständig nachbildet, wird die Ausrichtung und das Sizing clientseitig weitestgehend über reine Standard-Mittel wie HTML und CSS realisiert. Dies ermöglicht auch einzelnen Container-Komponenten statische HTML Templates z.B. für ein fixes Basis-Layout zuzuweisen. All diese Mittel eröffnen somit einen mächtigen und flexiblen Zugang zu den zugrunde liegenden Web-Technologien, wohl gemerkt: nur für den Fall der Fälle.

Flugsicherung

Ein wichtiger Punkt, der gerade mit dem Schlagwort RIA immer mehr an Bedeutung gewinnt, ist das Thema Sicherheit. Generell impliziert Ajax, dass vermehrt Logik auf der Seite des Clients und damit in einer potentiell nicht vertrauenswürdigen Umgebung zum Ablauf kommt. Problematisch ist dabei besonders, wenn dies nicht nur Präsentations- sondern auch sicherheitsrelevante Teile der Geschäftslogik betrifft. Das kann besonders bei „echten RIA“ Ansätzen, wie sie in Google’s Web Toolkit oder anderer JavaScript-basierten Ajax-Frameworks vertreten sind, schnell der Fall sein. Hier gilt es an der Schnittstelle zum Server die nötigen Sicherungsmaßnahmen zu ergreifen um spätestens dort wieder auf eine gesicherte Ausgangslage vertrauen zu können.

In wingS wird Ajax, und damit JavaScript, von Haus aus nur zur Umsetzung komfortabler Widgets und Seitenaktualisierungen genutzt, nicht jedoch für jegliche Geschäftslogik. Eine weitere Hürde stellt zudem noch der Low-Level Event-Dispatcher dar. Dieser ist die zentrale Instanz auf dem Server, welcher sich für die Annahme und Verteilung sämtlicher Client-Eingaben an die adressierten Komponenten verantwortlich zeichnet. Dabei prüft er auch, ob diese einer gültigen und nicht etwa einer veralteten Sicht entstammen und ob die adressierten Komponenten überhaupt aktiv und damit auch auf dem Client bedienbar sein sollten. Somit stehen zusätzlich zu der schon der Architektur entspringenden Eigenschaft, dass sämtliche Geschäftslogik in reinem Java auf einer gesicherten Umgebung im Server abläuft, auch noch grundlegende Sicherungsmechanismen der Client-Schicht bereit.

Kommentare

Schreibe einen Kommentar

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