Canoo vereinfacht Rich-Client-Entwicklung

09.12.2004
Von Von Thomas
IBM und Microsoft sind die namhaftesten Anhänger von Rich-Client-Infrastrukturen. Eine vergleichbare, auf Java basierende Lösung hat die schweizerische Firma Canoo im Portfolio.

Applikationen für Call-Center, Devisenhändler oder Sachbearbeiter stellen Anforderungen an die Ergonomie der Benutzeroberfläche, die mit HTML nicht erfüllt werden können. Client-Server- beziehungsweise Fat-Client-Applikationen sind in solchen Fällen die traditionelle Lösung. Ein neues Konzept bieten Rich-Client-Architekturen, wie sie derzeit IBM und Microsoft entwickeln. Die in solchen Infrastrukturen laufenden Rich-Internet-Applikationen (RIA) sollen hochinteraktive Benutzerschnittstellen mit der Web-Architektur von Thin Clients kombinieren.

Der RIA-Ansatz benötigt auf der Frontend-Seite eine Laufzeitumgebung für Rich Clients. Javascript und Flash sind mögliche Alternativen, die von Produkten wie "Casabac" (Javascript) und "Macromedia Flex" (Flash) genutzt werden. Eine dritte Option ist Java, dessen Client-Technik "Swing" sich in den vergangenen zwei Jahren erheblich verbessert hat. Die in Basel ansässige Canoo Engineering AG hat sich in ihrer RIA-Implementierung, dem "Ultra Light Client" (ULC), für den dritten Weg entschieden, der sowohl Client- als auch Server-seitig zu einer reinen Java-Lösung führt.

Was den Client bereichert

ULC ist eine in Java geschriebene Softwarebibliothek, die auf dem Java-Swing-Widget-Set basiert. Die Bibliothek ist in ein Client-Server-Modell aufgeteilt. Auf dem Server läuft die gesamte Applikationslogik inklusive der Präsentationslogik zur Steuerung der Abläufe und zum Aufbau der Benutzeroberfläche. Die Client-Seite enthält eine leichtgewichtige UI-Engine (UI = User Interface), die entweder in einem Applet oder als Applikation implementiert ist. Sie erweitert HTML um leistungsfähige Steuerungselemente, ein konfigurierbares Event-Modell sowie um zusätzliche Kommunikationsmodelle.

Die Steuerungselemente bieten Features wie Kontextmenü, Tastaturkürzel und Drag and Drop. Das konfigurierbare Event-Modell arbeitet die Events so weit wie möglich ohne Interaktion mit dem Server selbständig ab. Nur Events, die zur Steuerung der Applikationslogik benötigt werden, leitet die UI-Engine an den Server weiter. Neben dem Pull-Kommunikationsmodell bietet die UI-Engine die Möglichkeit der Push-Kommunikation sowie das bedarfsgesteuerte Laden der Steuerungselement-Inhalte.

Durch die J2EE-Unterstützung und damit vollständige Integration in die Java-Plattform ergibt sich laut Hersteller für ULC-basierende Applikationen eine durchgängige Architektur. Anders als bei den RIA-Ansätzen mit Flash und Javascript gibt es keine Brüche in der Programmierung. Die beteiligten Entwickler müssen nur die Standard-Java-Technik beherrschen, benötigen weniger Werkzeuge und schreiben homogene und damit einfacher wartbare Software.

Die Homogenität der Entwicklungsmittel ist nur eine der UCL-Eigenschaften. Weitere Vorteile ergeben sich durch die Bereitstellung eines Client-Server-Simulators und das Server-seitige Programmiermodell. Der Client-Server-Simulator erlaubt dem Programmierer, während der Entwicklung sowohl die Client- als auch die Server-Seite des Programms innerhalb der Virtual Machine der Entwicklungsumgebung auszuführen. Dies erspart ihm während des Edit-Compile-Test-Zyklus die Installation auf einem Web-Server sowie die schwierige Fehlersuche über Prozessgrenzen hinweg.

Das Server-seitige Programmier- und Laufzeitmodell ist der wohl wichtigste Vorteil von ULC: Die gesamte Applikationslogik läuft auf dem Server, inklusive aller Objekte zur Steuerung der Benutzeroberfläche. Diese Objekte bieten eine Swing-ähnliche Programmierschnittstelle: Die Applikationslogik kreiert mit einem ähnlichen Programmiermodell wie in Java Swing auf dem Server zum Beispiel ein Fensterobjekt. Dies bewirkt, dass in der UI-Engine auf der Client-Seite das korrespondierende Swing-Fensterobjekt angelegt wird. Alle auf dem Server erzeugten Objekte der Benutzeroberfläche sind Proxies für das zugehörige Swing-Widget auf dem Client. Diese Proxies sind wiederum nach dem Half-Object-Muster aufgebaut. Das "Half Object + Protocol" wurde von Gerard Meszaros in "Pattern Languages of Program Design" von James Coplien und Douglas Schmidt veröffentlicht (Addison Wesley 1995, ISBN 0-201-60734-4). Durch dieses Modell erübrigt sich die Aufteilung der Objekte zwischen Client und Server durch den Programmierer. (ue)