Adobe gibt Gas mit Coldfusion 9
Artikel erschienen in Swiss IT Magazine 2009/11
Pünktlich zur MAX, der Hauskonferenz von Adobe, wurde die neue Version von Coldfusion veröffentlicht. Wie zu erwarten war, wurden eine ganze Reihe neuer Funktionen eingebaut und das Zusammenspiel mit anderen Adobe-Produkten weiter optimiert. Coldfusion ist nun Teil der Flash-Plattform, die nebst den Runtimes (Flash, AIR, FlashLite) und den Tools (Flash Builder, Flash Professional) auch die Server (BlazeDS & LCDS, Flash Media Server) umfasst. Dieser Wechsel ist auch am Logo sichtbar, das nun wie bei allen Serverprodukten einen weissen Hintergrund hat.
Eine der wichtigsten Neuerungen von Coldfusion 9 ist die Integration von Object Relational Mapping (ORM). Adobe hat hier auf das bekannte ORM-Framework Hibernate gesetzt und dieses direkt in Coldfusion integriert. Somit können Coldfusion-Komponenten (CFCs) sehr einfach persistent gemacht werden. Es genügt dazu, eine Komponente mit this.ormenabled=”true” und this.datasource=”cfDatasource” entsprechend zu erweitern und für jede Eigenschaft ein cfProperty zu definieren. Danach können weitere ORM-Funktionen wie EntityLoad, EntitySave und EntityDelete verwendet werden. Coldfusion erstellt und aktualisiert auf Wunsch auch die Datenbanktabelle.
Auch für Adobes RIA-Runtime AIR bringt die neue Coldfusion-Version ein paar interessante Neuerungen. So lassen sich einerseits Actionscript-Klassen direkt an eine CFC binden und andererseits wurde elementare ORM-Funktionalität für die in AIR eingebaute SQLite-Datenbank integriert. Es muss dazu einfach im AIR-Projekt die Datei cfair.swc (cfroot/wwwroot/CFIDE/scripts/AIR) als Library hinzugefügt werden.
Wird eine entsprechend konfigurierte Actionscript-Klasse das erste Mal instanziiert, werden in der lokalen SQLite-Datenbank automatisch die benötigten Tabellen erstellt. Relationen zwischen den Objekten/Tabellen (one-to-one, many-to-one, one-to-many und many-to-many) und weitere Einstellungen lassen sich mit entsprechenden Metadata-Informationen im Actionscript definieren.
Bei der Synchronisation der Daten zwischen der lokalen AIR-Datenbank und dem Server hilft der Syncmanager: Er stellt Funktionen für den Datenempfang und -versand sowie für die Konflikt-Lösung bereit.
Mit dem neuen cfSpreadsheet-Tag lassen sich Excel-Dateien lesen, bearbeiten und erstellen. So ist es möglich, eine Excel-Datei in ein Spreadsheet-Objekt, eine Query, in CSV-Text oder HTML-Datei einzulesen oder aus einer Query direkt ein Sheet in einer Excel-Datei hinzuzufügen. Unterstützt werden dabei alle aktuellen Formate von Microsoft Office und OpenOffice. Aus Word- und PowerPoint-Dateien lassen sich neu auch PDFs generieren sowie aus HTML-Powerpoint-Präsentationen.
Auch die PDF-Funktionen wurden weiter verbessert. So ist neu Support für FDF (Formulare), Packages und RGB/ARGB-Bilder hinzugekommen. Header und Footer lassen sich neu nachträglich hinzufügen und Thumbnails der Seiten sind in grösserer Auflösung speicherbar. Bilder und Texte können nun extrahiert werden und PDF-Files lassen sich optimieren, was die Dateigrösse in den meisten Fällen eindrücklich verkleinert.
Coldfusion 9 kann zudem in Verbindung mit Microsofts Sharepoint-Services (2.0 und 3.0) und dem Sharepoint-Server (2003 und 2007) verwendet werden. So lassen sich Listen, Items, User und Gruppen auslesen, erstellen und bearbeiten. Ausser in den Services 2.0 können auch Sharepoint-Suchabfragen per Coldfusion-Code generiert werden.
Verschiedene CF-Funktionen können nun auch in Form von Services genutzt werden: Die Funktionalität von cfPdf, cfImage, cfDocument, cfMail, cfPop und cfChart ist nun über ein SOAP-Interface als Webservice oder aber als AMF/Flash-Remoting-Service verfügbar. Gerade für Flex-Developer ist dies ein sehr einfacher Weg, um aus Flex Mails zu versenden oder PDF-Dokumente zu erstellen.
Als Alternative zur bisherigen Suchmaschine Verity hat Adobe CF 9 zusätzlich mit Apache Solr ausgestattet. Solr verbraucht weniger Speicher und es exisitiert auch keine Limitierung in der Anzahl indexierter Dokumente. Mit einem Migrationstool lassen sich bestehende Verity-Collections einfach in Apache-Solr-Col-lections konvertieren.
Neben den bisher gezeigten neuen Möglichkeiten gibt es noch viel mehr Funktionen, die den Weg in den neuesten Coldfusion-Release gefunden haben.
? So implementiert Coldfusion nun die Portlet-Standards JSR-168, JSR-286 und WSRP. Dadurch lassen sich mit Komponenten sehr einfach Portlets erstellen, um diese in Anwendungen auf Basis von JBoss Portal Server oder WebSphere Portal Server 6.1 zu verwenden.
? Im Cluster-Betrieb lassen sich die Datentypen Query, Datetime und Array serialisieren und können somit im Session Scope zwischen den Instanzen repliziert werden.
? Der Sprachumfang von cfscript wurde erheblich erweitert: Es lässt sich nun fast alles ohne Tags schreiben. Gerade für Entwickler, die vorwiegend mit Actionscript programmieren und nun Coldfusion für ihr Backend auswählen, wird dies sehr viel angenehmer sein.
? Bei Komponenten können private Variablen in Funktionen nun überall im Code mit dem var-Keyword definiert werden und müssen nicht mehr unbedingt am Anfang der Funktion stehen. Alternativ steht für private Variablen der Local-Scope zur Verfügung und mit cfProperty werden nun implizite get- und set-Funktionen erstellt.
? Flash Remoting hat einen eigenen Endpoint-Manager erhalten, der besseren Support für die CF-Datentypen bietet. Es können somit nun auch zirkulare Referenzen aufgelöst werden und die Performance wurde um etwa den Faktor 9 gesteigert.
? Mit cfMail lassen sich nun auch signierte Mails einfach versenden. Attachments lassen sich automatisch von der Disk löschen, sobald das Mail aus dem Spool an den Mailserver übergeben wurde.
? Auch ein paar Ajax- und Flash-Controls sind neu hinzugekommen. Sehr praktisch sind die Tags cfMap und cfMapItem, um eine Google-Karte darzustellen und Markierungen zu plazieren. Der cfFileUpload-Tag erlaubt das Hochladen mehrerer Dateien – im Browser wird dazu ein Flash-basierter Dialog angezeigt, mit dem man mehrere Dateien auf einmal auswählen und dann hochladen kann. Die Buttons und Meldungen lassen sich über die Tag-Attribute anpassen und auch die Anzahl der Dateien sowie die maximale Grösse der Uploads sind frei definierbar.
? Ebenfalls verbessert wurden Auto-Suggest, Akkordion, Progressbar, Slider, Media Player und diverse Dialogfenster (Confirm, Alert und Prompt).
Mit dem neu integrierten Server-Manager lassen sich mehrere Coldfusion-Instanzen zentral verwalten. Die einzelnen Instanzen können auch auf unterschiedlichen Servern installiert sein. Die Instanzen lassen sich mit dem Server-Manager konfigurieren und überwachen: Man kann alle Einstellungen mit Hilfe des Server-Managers verändern. Auch eine Funktion, um verschiedene Instanzen zu vergleichen und dann zu synchronisieren, ist vorhanden. Abweichungen zwischen Entwicklungs- und Produktivservern lassen sich so rasch finden und Datasource-Definitionen innerhalb eines Clus-ters synchronisieren. Wer mehrere Instanzen zu verwalten hat, wird auch über die Möglichkeit einer Hot-Fix-Installation aus dem Manager heraus sehr dankbar sein.
Nachdem es einige Jahre keine richtige Entwicklungsumgebung für Coldfusion gegeben hat, will Adobe dies nun mit einem neuen Programm ändern. Analog dem Flash Builder (vormals Flex Builder) ist der Coldfusion Builder ein Eclipse-basiertes Tool, das entweder als Eclipse-Plug-in oder als eigenständiges Programm genutzt werden kann. Die aktuelle Public Beta 2 sieht schon sehr gut aus, bietet sie doch wichtige Funktionen wie einen Debugger, Code Completion und RDS-File/Database-Zugriff. Eine der wohl interessantesten Funktionen ist die Möglichkeit, den Coldfusion Builder durch Extensions mit zusätzlichen Funktionen auszustatten, wobei diese Extensions selbst in der Coldfusion-Sprache cfml geschrieben werden. Es existieren bereits einige schöne Beispiele, darunter eine Extension, die anhand einer in der RDS-View ausgewählten Datenbank oder Tabelle automatisch Code generiert.
Auch der Flash Builder (aktuell ebenfalls im Public-Beta-2-Staduim) wird besser mit Coldfusion integriert sein. So gibt es Data Wizards für den Coldfusion-Server, die automatisch den entsprechenden Coldfusion-Code generieren.
Bereits in Version 8 wurden die Lizenzbedingungen soweit korrigiert, dass auch Hot-Standby-Server mit der Produktivlizenz verwendet werden können. Coldfusion 9 erlaubt nun auch den Betrieb der internen Entwicklungsserver mit der Lizenz des produktiven Servers. Ausserdem wurde der Preis der Enterprise-Variante im Vergleich zu Coldfusion 8 um rund 25 Prozent reduziert. Die übrigen Preise sind indes gleich geblieben.