# ColdFusion

ColdFusion ist eine für webbasierte Skriptsprachen und Datenbank-Anwendungen konzipierte Middleware. ColdFusion wurde 1995 durch Allaire entwickelt. 2005 ging Allaire an Macromedia über. Durch die Übernahme Macromedias gehört das Produkt heute der Adobe Inc.
ColdFusion besteht grundlegend aus den folgenden drei Teilen:
* ColdFusion Application Server (einer der ersten web-orientierten Anwendungsserver)
* ColdFusion Markup Language (CFML, eine Skriptsprache, die es ermöglicht, serverseitige Applikationen zu programmieren)
* geeigneten Entwicklungsumgebungen (wie zum Beispiel Eclipse, Adobe ColdFusion Builder oder Adobe Dreamweaver)
ColdFusion steht dabei in direkter Konkurrenz zu vergleichbaren serverseitigen Systemen wie ASP.NET, JSP/Servlet, Ruby on Rails (RoR), ZOPE (Python), Perl und PHP. Im Gegensatz zu Skriptsprachen wie Perl, PHP, Python und Ruby, die Open Source sind, ist die Originalversion von ColdFusion nicht im Quellcode verfügbar. Der ColdFusion-Server von Lucee ist allerdings im Quellcode veröffentlicht.

## Allgemeines

Mithilfe von ColdFusion lassen sich schnell Webapplikationen erstellen. Die Tag-basierte Entwicklungssprache CFML ermöglicht niederschwelligen Einstieg in die Programmierung durch die Erweiterung von statischen Webdokumenten mit Programmlogik. Ein Merkmal von ColdFusion ist die einfache Bereitstellung und Administration des ColdFusion Application Servers, die einen leichten Einstieg in produktive Programmierung ermöglicht. Ursprünglich rein prozedural ist ab Version 6.0 (ColdFusion MX) auch objektorientierte Programmierung in der CFML Programmiersprache möglich.
Ein Unterschied zu vergleichbaren Systemen ist die automatische serverseitige Indexierung eines gesamten Webprojekts mittels der implementierten Verity Engine (ab ColdFusion 9 kommt Solr zum Einsatz) und die damit verbundene Bereitstellung einer fertig konfektionierten globalen Suche.

## Application Server

Der ColdFusion Application Server hat in entscheidenden Bereichen die Entwicklung anderer serverseitiger Web-Technologien inspiriert und geprägt.
Entwickelt wurde das Programm von Jeremy und seinem Bruder JJ Allaire. Sie gründeten 1994 die Allaire Corp. und vermarkteten ColdFusion und andere Produkte, wie beispielsweise HomeSite oder JRun. Mit WDDX wurde von Allaire schon früh ein Vorläufer zu den heutigen Webservices entwickelt, das zum Beispiel zur Content-Syndication verwendet wurde. ColdFusion war bei seinem Erscheinen 1995 der erste Anwendungsserver überhaupt und bis heute einer der erfolgreichsten weltweit – in seinem Mutterland, den USA, ist er sogar Marktführer. Außerhalb der USA hat es ColdFusion von je her etwas schwer und vor allem in Deutschland mit seiner traditionell starken PHP-Nutzergruppe ist ein Durchbruch nicht in Sichtweite. Umso weniger, als es sich hierbei um eine proprietäre (und auch kostenpflichtige) Software handelt. Dennoch verfügt ColdFusion über eine sehr aktive Nutzergemeinde wie die verschiedenen CFUGs (ColdFusion User Groups) beweisen.
Am 16. Januar 2001 übernahm Macromedia die Allaire Corp. und integrierte die Produkte in die eigenen Produktlinien. Mit der Version ColdFusion MX (6.0) wurde das Programm vollkommen neu geschrieben und die zugrundeliegende Engine auf J2EE umgestellt. Im Jahr 2002 wurde ColdFusion von Sun als 100 % Java-kompatibel zertifiziert. MX-Anwendungen laufen somit unter Bea Weblogic, genauso wie unter IBM WebSphere, SunOne oder Apache Tomcat. Von Haus aus wird JRUN 4 als Application-Server mitgeliefert.
Macromedia ColdFusion MX (6.1 und 7) wird in drei verschiedenen Versionen angeboten. Die kostenlose ColdFusion Developer Edition ermöglicht Interessierten den lokal begrenzten Einstieg in die Welt von CF. Die Standard- und Enterprise-Edition hingegen sind kommerzielle Versionen, die sich nur in Details wie der unterstützten Anzahl der Hauptprozessoren, den Betriebssystemen, Datenbankschnittstellen und der Clusterfähigkeit unterscheiden.
Mit der Version ColdFusion MX 7 kamen zu den bisherigen Funktionalitäten insbesondere Möglichkeiten zur Druckausgabe (PDF und FlashPaper), Reporting inkl. Report Generator, Event-Gateways (SMS, Instant Messaging und so weiter) und die Möglichkeit zur Generierung von XForms und FlashForms (durch die Verwendung von Apache Flex) hinzu. Siehe auch geeignete Entwicklungsumgebungen.
Es existierten weiterhin noch „freie Implementierungen“ die es ermöglichen, ColdFusion auf weiteren Webservern / Betriebssystemen zu verwenden. Diese werden meist als Modul in den Webserver integriert. Zu nennen sind hier die Lösungen Lucee, Railo, BlueDragon, Smith, CORAL und IgniteFusion. Diese Open Source Script-Engines genannten Lösungen basieren alle auf der Möglichkeit, Java-Klassen und -Bibliotheken mit dem CFML-Code zu verschmelzen. Bereits im Juni 2007 stellte das Unternehmen Smith eine vollständig in Java geschriebene ColdFusion-Cross-Plattform vor. Die derzeit ernstzunehmendste Konkurrenz erfährt das Original durch das Schweizer Unternehmen Lucee Association Switzerland, das einen freien CFML-Applikationsserver herausgebracht hat. Lucee geht als Nachfolger von Railo hervor.
Nach der Übernahme von Macromedia durch Adobe werden nun alle Macromedia-Produkte von Adobe weiterentwickelt und vertrieben. Seitdem sind mittlerweile zwei weitere Versionen von ColdFusion erschienen. Dabei ist seit Adobe ColdFusion 8 eine stärkere Integration in die Windows-Welt mit Einführung neuer Schnittstellen zu Microsoft Exchange Server und ASP.NET deutlich erkennbar. Daneben wurden in die Version 8 Ajax-Widgets integriert, die Unterstützung für JSON wurde implementiert sowie Optionen zur Bild- und PDF-Bearbeitung. Außerdem wurde die Performance gegenüber dem Vorgänger erhöht.
Seit Oktober 2009 gibt es die aktuelle Version Adobe ColdFusion 9. Die größte Neuerung hierbei stellt die Unterstützung von objektrelationaler Abbildung (englisch: object-relational mapping; kurz: ORM) dar. Das ORM von ColdFusion 9 basiert auf dem aus der Java-Welt bekannten Hibernate und vereinfacht dadurch die persistente Datenhaltung enorm. Weitere Neuerungen beinhalten die enge Integration mit der auf Eclipse beruhenden IDE ColdFusion Builder, die Verarbeitung von Microsoft-Office-Dateien, eine Microsoft-SharePoint-Integration, erweiterte Flash-Interoperabilität und die Zusammenarbeit mit Adobe AIR zur Datensynchronisation.

## Markup Language

Die ColdFusion Markup Language (kurz CFML) ist eine Sammlung von Tags und Funktionen, die die Entwicklung von Webanwendungen stark vereinfachen. Trotzdem ist CFML eine sehr leistungsfähige Sprache die auch komplexe Technologien wie Datenbanken inkl. gespeicherter Prozeduren, ORM, PDF-Generierung, WSDL, LDAP, XML, XSLT, XForms, Verity und Solr etc. über einfache HTML-ähnliche Tags anzusprechen vermag. Alternativ zur Tag-Syntax kann man auch eine Skriptsyntax ähnlich der von PHP verwenden, welche in vergangenen ColdFusion Versionen vom Parser mitunter schneller verarbeitet werden konnte. Mit diesem Set an Werkzeugen wird ein Rapid Application Development ermöglicht. 2008 wurde die Weiterentwicklung der Sprache in das CFML Advisory Committee ausgelagert. Obwohl diese Gruppe von Adobe gegründet wurde, besteht sie auch aus Mitarbeitern anderer CFML Serverentwickler als auch aus Community-Mitgliedern und soll so gewährleisten, dass der Sprachstandard offen und einheitlich gehalten wird.
Die ColdFusion Markup Language diente in Teilen als Vorlage für die Entwicklung von JSP 2.0 und der JSTL. Der Sprachumfang von CFML hat sich über die Jahre permanent weiterentwickelt. Eine gravierende Neuererung sind die Fusion Components (CFC). CFCs ermöglichen dem Entwickler einen stärkeren OOP-Ansatz bei der Entwicklung von Webanwendungen zu wählen.
Wird eine Seite mit CF-Code (Dateiendung .cfm, seltener auch .cfml) aufgerufen, dann fügt der Webserver gemäß den Skriptanweisungen HTML-Code in die Seite ein und reicht sie dann an den Webbrowser des Besuchers weiter. Dem Besucher zeigt sich also nur der HTML-Quelltext des Produkts, nicht des Skripts selbst. Letzterer bleibt dem Seitenbesucher (wie auch bei anderen serverseitigen Skripten wie z. B. PHP) verborgen.

### Code-Beispiel

Einfaches CFML-Skript (gibt „Hallo Welt!“ aus):
Das erweiterte Skript in HTML integriert (gibt ebenfalls „Hallo Welt!“ auf der Webseite aus):

## Geeignete Entwicklungsumgebungen

Zur CFML-Entwicklung stehen unter anderem folgende Umgebungen zur Verfügung:
* Sublime Text 3
* Visual Studio Code
* Adobe ColdFusion Builder
* CFECLIPSE (Eclipse Plugin)
* Adobe Dreamweaver
* Macromedia HomeSite 5.5
* Macromedia HomeSite ColdFusion Studio <5.0
* PrimalScript
* Atom
* IntelliJ IDEA

## Datendiebstahl

Unbekannte Täter haben einer Mitteilung von Adobe am 3. Oktober 2013 zufolge den Quelltext von Adobe Acrobat, Adobe ColdFusion, möglichen anderen Programmen und Kreditkartendaten von 2,9 Mio. Kunden gestohlen.

## Literaturhinweise

* Ralf Blittkowsky: Macromedia Studio MX 2004. Dynamische Websites entwickeln mit ColdFusion MX, Dpunkt, 2004, ISBN 3-89864-211-9
* Philipp Cielen, Steffen Goldfuss, Christoph Schmitz: ColdFusion MX. Professionelle Anwendungsentwicklung fürs Web, AW, 2003, ISBN 3-8273-2068-2
* Peter Müller: ColdFusion in 21 Tagen, M&T, 2001, ISBN 3-7723-6525-6