# ColdFusion

ColdFusion est un langage informatique middleware utilisé pour développer des applications Web interprétées et transpilées en Java.

## Histoire

ColdFusion est un langage à base de balises syntaxiquement plus proche d'HTML que d'autres langages utilisés dans le même domaine comme ASP, JSP ou encore PHP. Il a été créé par les frères Allaire, Jeremy et Joseph en 1995, ce qui les a conduits à fonder la compagnie Allaire (en) la même année. Un langage très simple à utiliser dès le départ, ColdFusion permet aux développeurs d'effectuer rapidement des opérations rudimentaires comme interagir avec une base de données et afficher dynamiquement des informations sur des pages Web. C'est à cause de leur réussite du début que Microsoft, en mars 1996, rachète Aspect Software, un des concurrents directs d'Allaire et qui conduira un peu plus tard au développement d'ASP.
DBML (DataBase Markup Language) était le nom du langage utilisé pour la version 1.0 de ColdFusion et s'est transformé rapidement en CFML (ColdFusion Markup Language). Dès la version 1.5, les développeurs pouvaient développer leurs propres tags en C++ pour étendre le langage qui était alors assez limité. C'est aussi à partir de cette version qu'Allaire réécrit complètement ColdFusion en Java afin de lui assurer une meilleure portabilité vers d'autres systèmes.
Le 16 janvier 2001, une fusion a eu lieu entre Allaire et Macromedia. Peu de temps après est sortie la version 5.0 de ColdFusion et en juin 2002, la version MX. À partir de MX, la suite de produits est appelée Macromedia Coldfusion MX et repose complètement sur les bases de J2EE. Macromedia améliore l'intégration entre ses différents produits. Ainsi, Flash s'intègre dans ColdFusion, et ce dernier est complètement supporté par Dreamweaver MX. Cette version permet de manipuler plus facilement des fichiers XML, de faire tourner des Services Web sur le serveur d'application et propose nativement une possibilité de programmation orientée objet via l'utilisation de composants (classes).
Le 7 février 2005, Macromédia sort Coldfusion MX 7, nouvelle mouture qui en plus d'apporter de nombreux correctifs, se veut améliorée au niveau de l'interface utilisateur. Il est désormais possible de générer dynamiquement des formulaires en Flash ou des fichiers PDF ou FlashPaper.
Le 3 décembre 2005, Macromedia est racheté par Adobe.
Le serveur d'application ColdFusion par Adobe est payant, ses concurrents (PHP…) sont gratuits. À l'instar de la bataille Windows/Linux, Adobe justifie ce tarif par la simplicité et la rapidité de mise en place d'applications développées en ColdFusion par rapport à leur équivalent PHP. Il existe cependant d'autres implantations de serveurs interprétant du code CFML comme Railo, BlueDragon ou openBD, ces serveurs là étant gratuits, opensource, voire Libres.
ColdFusion intègre nativement une couche d'abstraction de base de données. Le code n'est donc pas lié à tel ou tel SGBD (Oracle_(entreprise), MySQL, Microsoft Access, Microsoft SQL Server) mais en fait abstraction, ce qui est similaire à l'API PDO écrite en C pour PHP5.
ColdFusion embarque également une interface d'administration web, qui permet de gérer l'interface avec les autres composants de la plateforme : déclaration une fois pour toutes des différentes bases de données, d'un serveur de mail éventuel, de tâches planifiées, de webservices, connexion avec moteur de recherche (SOLR en OEM), etc. De gérer un grand nombre de paramètres du serveur applicatif : gestion du cache (serveur, BdD, requêtes), gestion des erreurs, tuning mémoire, stockage sessions, etc. Et enfin, d'accéder à certains outils d'administration : monitoring en temps réel, paramètres de sécurité.
Plusieurs langages et bibliothèques d'objets peuvent être utilisés en conjonction avec ColdFusion comme Java, le C++, COM, CORBA, XML et SOAP.

## Versions
### Période Allaire

* 1995: Cold Fusion 1.0
* 1996: Cold Fusion 1.5
* 1996 (Novembre): Cold Fusion 2.0
* 1997: Cold Fusion 3.0
* 1998 (Janvier): Cold Fusion 3.1
* 1998 (Novembre): ColdFusion 4.0 (L'espace entre Cold et Fusion disparait au profit de la notation ColdFusion)
* 1999: ColdFusion 4.5

### Période Macromédia

* 2001: ColdFusion 5.0
* 2002: ColdFusion MX 6
* 2005: ColdFusion MX 7

### Période Adobe

* 2007: ColdFusion 8
* 2009: ColdFusion 9
* 2012: ColdFusion 10
* 2014: ColdFusion 11
* 2016: ColdFusion 2016
* 2018: ColdFusion 2018
* 2020: ColdFusion 2021
* 2023: ColdFusion 2023 (Fortuna)

## Exemples de code

Contrairement aux autres langages de balises, le texte et les variables ne nécessitent pas d'instruction pour être affichées, seule la balise <cfoutput> est nécessaire pour indiquer si l'affichage doit être fait ou non. Une directive plus globale permet de ne jamais indiquer l'usage de cette balise (<cfsetting enablecfoutputonly="no">).
Hello world
En plus de la directive <cfoutput>, les variables, pour qu'elles soient affichées, doivent être entourées par des #.
Affichage d'une variable dynamique
Une boucle
Une condition
Une requête dans une Base de données (MSSQL, Mysql, Oracle, Firebird,....)