ColdFusion MX: Kein kalter Kaffee

Die komplett überarbeitete Neuauflage des ColdFusion-Servers glänzt mit Native- Java-Support, objektorientierten Komponenten und Web-Service-Unterstützung.

Artikel erschienen in Swiss IT Magazine 2002/18

     

Im Rahmen seiner MX-Strategie legt Macromedia neben Flash MX, Fireworks MX und Dreamweaver MX auch den vor eineinhalb Jahren von Allaire übernommenen Applikationsserver ColdFusion in einer neuen Version auf. Hinter der MX-Version verbirgt sich allerdings nicht nur ein blosses Zwischen-Update zur Anpassung an die anderen MX-Familienmitglieder, wie sich aufgrund der erst vor knapp zehn Monaten veröffentlichten Version 5.0 vermuten liesse, sondern eine generalüberholte Version, die komplett neu geschrieben wurde.


Fit für Java

Dieser Schritt wurde nötig, weil Macromedia den ColdFusion-Server auf die Java-2-Enterprise-Plattform (J2EE) portiert hat und dazu die gesamte Software auf Native-Java umstellen musste. Hinter dem Wechsel auf J2EE verbirgt sich ein cleverer Schachzug, der zwei Welten zusammenfügt, die sich ausgezeichnet ergänzen: Die einfach zugängliche Web-Programmierumgebung von ColdFusion wird mit den mächtigen Fähigkeiten der Java-Plattform unter einem Dach vereint.
ColdFusion-Entwickler erhalten Zugriff auf das komplette Java-Universum, ohne auf ihre gewohnte Entwicklungsumgebung verzichten zu müssen. So können High-end-Programmierer Business-Logik-Komponenten weiterhin in Java entwickeln, um diese Script- und Tag-orientierten Webentwicklern zur Verfügung zu stellen, die diese wiederum mit der benötigten Präsentationslogik ergänzen. JSP-Templates, JSP-Tag-Bibliotheken, JavaBeans und Servlets können jetzt direkt mit der ColdFusion-Markup-Sprache (CFML) genutzt werden (nur Enterprise und J2EE-Editionen).



Der Wechsel auf die Java-Plattform bringt noch eine ganze Reihe weiterer praktischer Neuerungen mit. So bietet ColdFusion MX jetzt Unicode-Support und Application Isolation. Letztere sorgt für stabilere Plattformen, da verschiedene ColdFusion-Applikationen in isolierten Bereichen ausgeführt werden und sich dadurch nicht mehr gegenseitig zum Absturz bringen können.




Neu ist auch, dass die ColdFusion-Templates nicht mehr in den bisher verwendeten p-Code, sondern in den schnelleren Java-Bytecode kompiliert und als Java-Klassen auf dem Server abgelegt werden. Die Performance-Verbesserungen sind denn auch deutlich spürbar. So konnten wir im direkten Vergleich mit ColdFusion 5.0 beim Ausführen von CFML-Templates Geschwindigkeitssteigerungen von bis zu 500 Prozent feststellen.



Damit ColdFusion MX auch auf Windows- und Linux-Servern ohne vorhandene J2EE-Umgebung läuft, hat Macromedia die hauseigene Java-Plattform JRun direkt in die Professional- und Enterprise-Editionen des Applikationsservers integriert. Geplant sind aber auch spezielle ColdFusion-MX-Versionen für J2EE-Applikationsserver, die dann direkt auf IBM Websphere, Sun One Application Server oder BEA Weblogic aufsetzen.




Schritt in Richtung OOP

Neben der Portierung auf Java stellt das neue Komponenten-Konzept die wohl gewichtigste Neuerung in ColdFusion dar. Dies nicht nur, weil damit ein zumindest teilweises objektorientiertes Programmieren mit CFML möglich wird, sondern weil sich auch der Entwicklungsprozess punkto Methodik, Teamarbeit, Reusability und Programmwartung stark verändern wird.



ColdFusion-Komponenten erlauben das Verkapseln von Anwendungslogik in Objekte, die dann aus ColdFusion-Applikationen, von Flash-Clients und als Web-Services genutzt werden können. Das Definieren von Komponenten geht in üblich einfacher ColdFusion-Manier mit der Tag-basierten CFML-Sprache vonstatten. Neben der zu verkapselnden CFML-Logik müssen mit den entsprechenden ColdFusion-Tags lediglich die Methoden (Funktionen) und Übergabe-Parameter der Komponente definiert und unter dem neuen Dateityp .CFC abgespeichert werden.




Nach dem Vorbild objektorientierter Sprachen können ColdFusion-Komponenten auch anhand von Klassen hierarchisch mit Hilfe von Unterverzeichnissen gegliedert werden.



Interessant ist auch die Möglichkeit, ColdFusion-Komponenten zu vererben. Bei diesem ebenfalls aus der OOP-Welt bekannten Verfahren können einer neuen Komponente alle Eigenschaften eines bestehenden Objektes zugewiesen werden. Der Entwickler braucht das neue Objekt also nur noch um die gewünschte zusätzliche Funktionalität zu ergänzen. Veränderungen, die später am Vaterobjekt vorgenommen werden, werden auch automatisch auf alle davon abgeleiteten Kinderobjekte appliziert.



Auch wenn das Konzept der ColdFusion-Komponenten die Möglichkeiten der objektorientierten Programmierung nicht vollständig ausreizt, so stellt der eingeschlagene Weg zumindest einen Schritt in die richtige Richtung dar. Die gebotenen Möglichkeiten machen elegantere CFML-Applikationen möglich und vereinfachen das Wiederverwenden und gemeinsame Bearbeiten von Code im Team.




Web-Services: Einfacher geht's nicht

Web-Services stehen momentan in Entwicklerkreisen hoch im Kurs. Dabei handelt es sich um Webangebote, die ihre Funktionen über standardisierte Internetprotokolle (HTTP, SOAP) anderen Webanwendungen zur Verfügung stellen. Ein typisches Beispiel für einen Webdienst wäre etwa ein Stock-Quote-Service, der nach Erhalt eines Tickersymbols den entsprechenden Aktienkurs zurückliefert. Dieser kann dann für weitere Berechnungen oder als Output in der eigenen Applikation weiterverarbeitet werden. Da Web-Services ausschliesslich auf offenen Internetprotokollen basieren, wird die Integration von heterogenen Systemen einfacher als je zuvor in der IT-Geschichte.



Nachdem praktisch alle Hersteller von Webplattformen entsprechende Lösungen für Web-Services in ihre Produkte integriert haben, hat sich Macromedia etwas länger Zeit gelassen. Das Warten hat sich aber gelohnt. Einen derart einfachen Approach zum Einbinden und Veröffentlichen von Webdiensten haben wir bis jetzt in noch keinem Entwicklungswerkzeug gesehen. Für beide Verfahren bedient sich ColdFusion bei der oben behandelten Komponententechnologie. So werden Web-Services wie ColdFusion-Objekte über den neuen cfinvoke-Tag aufgerufen. Mit dem einzigen Unterschied, dass hier die URL zur WSDL-Datei (XML-File, das alle Angaben zur Nutzung eines Web-Service enthält) des Webdienstes angegeben werden muss. Um Low-Level-Operationen wie das Auswerten des WSDL-Files, das Parsen der SOAP-Nachrichten und das Erstellen von Web-Service-Proxies braucht sich der Entwickler nicht zu kümmern, ColdFusion übernimmt das automatisch für ihn.




Noch einfacher geht das Herausgeben von eigenen Webdiensten. So kann jede ColdFusion-Komponente durch Ändern eines einzigen Attributs als Webdienst veröffentlicht werden. Das entsprechende WDSL-File generiert ColdFusion MX automatisch.




XML-Support

Eine umfassende Unterstützung für die Verarbeitung vom XML war in ColdFusion bereits seit langem überfällig. Mit dem MX-Release erhalten Entwickler nun endlich einen Satz an CFML-Tags und Funktionen, mit deren Hilfe XML-Daten geparst, manipuliert und generiert werden können. An ColdFusion übergebene XML-Dateien werden in ein XML-Variablenkonstrukt umgewandelt, das die XML-Daten mit Hilfe der in ColdFusion üblichen Variablentypen "Strukur" und "Array" zur weiteren Verarbeitung im Speicher bereithält. Eine sehr elegante Lösung, denn so können XML-Daten mit den vertrauten CFML-Funktionen zur Bearbeitung von Datentypen manipuliert werden. Der Umweg über das kompliziertere DOM (Document Object Model) entfällt. Weiter bietet ColdFusion MX auch Support für XPath zum Durchsuchen von XML-Datenbäumen und einen neuen CFML-Tag, mit dem XSLT-Stylesheets auf XML-Dokumente angewendet werden können.





CFML-Alternative: ActionScript

Alternativ zur Markup-Sprache CFML bietet ColdFusion MX neu auch Support für Server-Side ActionScript. Mit CFScript hatte Macromedia bereits in der Version 4.0 einen Scripting-Mechanismus eingeführt. Allerdings waren dessen Möglichkeiten mit dem Handling von Variablen und Objekten mehr oder minder ausgereizt. Mit ActionScript stehen jetzt mehr CFML-Tags alternativ auch in einer Script-Variante zur Verfügung. So lassen sich jetzt beispielsweise SQL-Abfragen mit der Script-Syntax formulieren.



Mit diesem Feature zielt Macromedia vor allem auf JavaScript- und Flash-Entwickler, die sich dadurch schneller mit der ColdFusion-Programmierung zurechtfinden sollen. Grundsätzlich eine gute Idee, allerdings lauert hier die Gefahr, dass die Konsistenz des Programmcodes verwässert wird, was vor allem bei der Entwicklung im Team oder der Programmwartung zu höheren Kosten führen kann.





Flash-Anbindung

Komplett erneuert wurde auch das Zusammenspiel mit Flash MX. Der in ColdFusion MX integrierte Flash-Remoting-Dienst stellt mit dem Action-Message-Format ein neues Protokoll zur Verfügung, das für schnellere Verbindung zwischen Server und Flash-Player sorgt und neu auch komplexe ColdFusion-Variablen wie Arrays oder Recordsets übermitteln kann.



Für die Entwicklung der Programmlogik von ColdFusion/Flash-Anwendungen stehen zwei verschiedene Möglichkeiten zur Auswahl. Einerseits kann vom Flash-Client mit ActionScript via Remoting-Dienst jede ColdFusion-Komponente angesteuert werden. Dieses Verfahren ist vor allem dann sinnvoll, wenn eine Anwendung sowohl HTML- als auch Flash-Clients unterstützen soll. Die Applikationslogik muss so nicht für jeden Client separat geschrieben werden. Andererseits können mit Hilfe von zwei neuen Flash-Servervariablen Daten direkt zwischen CFML-Template und Flash-Client ausgetauscht werden. Über den Flash-Remoting-Dienst versorgt ColdFusion MX die Flash-MX-Entwicklungsumgebung mit Runtime-Informationen, so dass programmübergreifendes Debugging möglich wird.




Neu verfügt ColdFusion MX jetzt auch über einen integrierten HTTP-Server. Dieser ist zwar nicht für den produktiven Einsatz gedacht - hier sollten nach wie vor leistungsfähigere Webserver wie IIS oder Apache eingesetzt werden -, erweist sich aber bei Standalone-Installationen für Entwickler als praktisch. So kann künftig auf das Einrichten eines separaten Webservers auf der lokalen Station verzichtet werden.



Interessant sind auch die Verbesserungen an der neu bei ColdFusion 5.0 hinzugekommenen Grafik-Engine. So gibt es jetzt deutlich mehr Diagrammtypen und Formatierungsoptionen. Ausserdem können Diagramme nun kombiniert (z.B. Balken mit Linien) und mit Drill-Down-Funktionen ausgestattet werden.




Migration auf ColdFusion MX

Grundsätzlich sollten sich bestehende CF-Anwendungen ab Version 4.0 ohne grossen Anpassungsaufwand auf die MX-Version portieren lassen. Die CFML-Syntax hat nur wenige Änderungen erfahren, die die Rückwärtskompatiblität beeinträchtigen. Viele Applikationen werden sich gar ohne eine einzige Code-Anpassung mit der MX-Version abspielen lassen.



Bei unseren Tests brachten wir die von InfoWeek Online verwendete Forumssoftware Fusetalk, die noch auf ColdFusion 4.5 basiert, ohne einen einzigen Code-Eingriff auf Anhieb zum Laufen. Sehr praktisch: Um allfällige Unstimmigkeiten auszuloten, steht neu innerhalb der Administrator-Konsole ein Code-Analyzer zur Verfügung, der allfällige Inkompatibilitäten fein säuberlich auflistet. Der Analyzer liefert dabei nicht nur Hinweise auf fatale Fehler, sondern auch Warnungen für mögliche künftige CFML-Änderungen und Hinweise auf Syntax-Konstrukte, die zwar noch unterstützt werden, aber veraltet sind.



Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Welche Farbe hatte Rotkäppchens Kappe?
GOLD SPONSOREN
SPONSOREN & PARTNER