Blog

Aktuelle architektonische Frameworks - Entwicklungen in Flex

ShriKant Vashishtha

Aktualisiert Oktober 23, 2025
4 Minuten

Flex bietet die Möglichkeit, RIA-Anwendungen auf deklarative Weise mit MXML zu erstellen. Im Gegensatz zu Swing, wo Sie die gesamte Programmierung in Java vornehmen müssen, verbirgt Flex einen Großteil der Komplexität hinter MXML-Tags, wie es JSTL/Taglibs für JSPs tun. In der JSP-Welt erfolgt die Skripterstellung auf der Ansichtsebene in JavaScript und der serverseitige Code der Präsentationsschicht wird in Java geschrieben, wodurch eine Art Trennung zwischen dem clientseitigen Code und dem serverseitigen Code entsteht. Wenn Sie wirklich etwas Dynamisches in JSPs machen wollen, schreiben Sie entweder Java-Code innerhalb von JSP (was allerdings nicht empfohlen wird) oder Sie verwenden/erstellen Taglibs, um denselben Effekt zu erzielen. In der Flex-Welt dreht sich alles um ActionScript (AS). Unabhängig davon, ob Sie Skript- oder serverseitigen Code schreiben, handelt es sich um AS-Code, was für den Entwickler eine verwirrende Situation darstellt. Es wird sehr schwierig, den Skripting-Code vom serverseitigen Code zu trennen. Das ist einer der Gründe, warum sich die Leute über Flex beschweren, denn es sieht so aus, als gäbe es keine klare Trennung zwischen Skripting-Code und serverseitigem Code.

Aus all diesen Gründen wurden in der Flex-Welt einige Frameworks entwickelt, die MVC-Muster implementieren. Eines dieser Frameworks ist Cairngorm, ein architektonisches Framework, das die Trennung zwischen verschiedenen MVC-Schichten unter Verwendung einiger sehr bekannter Entwurfsmuster aus der JEE-Welt ermöglicht. Es wird Ihnen also bekannt vorkommen, wenn ich von Front Controller, Business Delegate, Service Locator, GOF Command Pattern und Value Object Pattern spreche. In der Flex-Welt wird das Data Transfer Object (DTO)-Muster aus einigen Gründen immer noch als Value Object bezeichnet. Neben den genannten Mustern gibt es noch ein weiteres Design-Muster, das spezifisch für die Flex-Welt ist und Model Locator Design-Muster genannt wird. Dieses Muster basiert allerdings auf dem Singleton-Muster.Während ich nun über diese Entwurfsmuster spreche, werden Sie sich vielleicht fragen, dass einige dieser Muster aufgrund ihrer Singleton-Natur die Testbarkeit stark einschränken. Service Locator versucht, die Abhängigkeiten zu erhalten, anstatt sie zu injizieren. Um all diese Probleme zu lösen, werden Sie sich vielleicht fragen, ob es nicht auch in der Flex-Welt ein Spring-ähnliches Framework für die Injektion von Abhängigkeiten geben müsste. Da haben Sie vollkommen Recht. Es gibt eines und es heißt prana framework. Wenn Sie prana zusätzlich zum Cairngorm-Framework verwenden, entfällt automatisch die Notwendigkeit, Controller-Klassen, Service Locator, Singleton-Charakter von Model Locator usw. zu erstellen. Außerdem verbessert es automatisch die Testbarkeit der Anwendungen und fördert die Programmierung auf Schnittstellen. Bei der Verwendung von prana können Sie jedoch auf ein Problem stoßen. Sie definieren die eigentliche Implementierung der Schnittstelle in der Datei applicationContext.xml, aber der mxml-Compiler berücksichtigt diese Abhängigkeiten bei der Erstellung der resultierenden SWF-Datei nicht, da er diese Abhängigkeiten im eigentlichen Code nicht sieht. Dies kann zu einer Vielzahl von Laufzeitfehlern führen. Um diese Probleme zu lösen, werden in der Regel Implementierungen in die MXML-Hauptdatei aufgenommen, nur um der Kompilierung willen, von der Sie bereits wissen, dass sie fehleranfällig ist. Ich würde dies als die Einschränkung des Flex-Frameworks bezeichnen, da es derzeit nicht in der Lage ist, die Abhängigkeiten mit prana-basierten applicatonContext.xml-Dateien aufzulösen. Um dieses Problem zu lösen, haben einige Leute Tools entwickelt, mit denen sie die Factory-Klassen aus der Datei applicationComtext.xml generieren können, um die tatsächliche Implementierung zu erhalten. Das Prana-Framework befindet sich derzeit in der Version 0.6 und wie Sie es erwarten, erfordert es eine ähnliche IDE, wie Sie sie für Spring (SpringIDE) haben. Selbst nach der Beseitigung aller oben genannten Probleme in Cairngorm mit Hilfe von "prana" hat Cairngorm noch einige andere Probleme, die dann mit cairngorm UM-Erweiterungen beseitigt werden. Für Unit-Tests haben wir das FlexUnit-Framework, aber es erfüllt einige der Anforderungen von Unit-Tests wie das Testen von asynchronem Code und andere ähnliche Probleme nicht. Um diese Probleme zu lösen, wird derzeit das Fluint-Framework verwendet, das sowohl ein Unit-Test- als auch ein Integrationstest-Framework ist. Ähnlich wie das Selenium-Framework zum Testen von Webanwendungen verfügt die Flex-Welt derzeit über FlexMonkey zum Testen der Flex-Benutzeroberfläche. Die Erstellung von Flex erfolgt meist mit ANT, das im Vergleich zu Maven 2 eine niedrigere Build-Abstraktionsebene bietet. In der Flex-Welt gibt es derzeit keine guten Maven-Plugins. In ähnlicher Weise benötigt FlexBuilder (eine Eclipse-basierte Flex-IDE) viele Verbesserungen in der IDE in den Bereichen Code-Refactoring (Refactoring-Unterstützung für ActionScript-Klassen, abgesehen von der Umbenennung) und andere sehr übliche Eclipse-basierte Code-Generierung. Wie Sie bereits sehen können, durchläuft die Flex-Welt derzeit eine Menge Änderungen an architektonischen Frameworks. Meistens handelt es sich dabei um Flex-spezifische Implementierungen von bereits bewährten JEE-Architektur-Frameworks/Design-Patterns. Es wird erwartet, dass es in der Flex-Welt in nächster Zeit mehr ausgereifte Frameworks geben wird, die das Leben eines Entwicklers einfacher und die Software wartbarer machen werden.

Verfasst von

ShriKant Vashishtha

Contact

Let’s discuss how we can support your journey.