# ColdFusion Programming

ColdFusion is a JVM-based programming language that supports scripting and templating and was developed by J.J. Allaire in 1995 to make development of CGI scripts easier and faster. It has matured over the years to include many interfaces with other languages and environments.

## ColdFusion History

Timeline:
* July 1995 - Cold Fusion 1.0 released.
* November 1996 - Cold Fusion 2.0 released. This release included 150+ additional functions.
* July 1997 - Cold Fusion 3.0 released. This release included custom tags.
* November 1997 - Cold Fusion 3.1 and ColdFusion Studio Released. ColdFusion Studio was the first editor specifically designed to work with ColdFusion.
* November 1998 - ColdFusion 4.0 released. This is the first release where Cold and Fusion were combined without the space.
* August 1999 - ColdFusion 4.5 released. This was the first time that a true debugger was included.
* March 2001 - Macromedia bought Allaire including the ColdFusio*June 2001 - ColdFusion 5.0 released. This release included the cfgraph functions.
n language.
* June 2002 - ColdFusion MX (6) released. This release was a complete rewrite to a Java Engine.
* August 2003 - ColdFusion MX 6.1 released. This was bundled with JRUN.
* February 2005 - ColdFusion MX 7 released. This included Rich Internet Application Support.
* December 2005 - Adobe merged with Macromedia.
* July 2007 - ColdFusion 8 released.
* October 2009 - ColdFusion 9 released.
* May 2012 - ColdFusion 10 released.
* April 2014 - ColdFusion 11 released.
* 2016 Release
* 2018 Release
* 2021 Release
ColdFusion servers prior to version 6.0 were written in C++.
Since version 6.0, the ColdFusion application server is a Java application sitting on top of the Java Platform. When a page is first called, the ColdFusion code is converted into Java bytecode; this allows better integration with the Java platform and also allows JSP "Java server pages" to be called and run from within a ColdFusion application.
Beginning in version 7 there was a dramatic focus on RIA (Rich Internet Applications). The ability to include flash forms, xhtml forms, dynamically created pdfs and flashpaper were all included.
Version 8, released in mid 2007, showed dramatic performance improvements, and extended the language functionality to include image processing, presentations, MS Exchange integration, support for .Net components, PDF Form manipulation, Ajax form components (based upon ExtJs 1.1), and more.
Version 9 was released in October 2009, providing many huge advancements to the server and the language. Almost all ColdFusion tags now have CFScript equivalents, allowing developers to 'script' entire applications. New integration points now include Hibernate ORM (built-in), index and search from either Solr (new) or Verity, MS Office/OpenOffice document manipulation (presentations, spreadsheets and documents), and MS Sharepoint integration. There is also an AIR based desktop application, which can be used to administer/update multiple server instances remotely, and a brand new, Eclipse based IDE (ColdFusion Builder) is currently in public beta testing. Further scripting capabilities include enhancements to the ColdFusion JavaScript functions, used for interaction with the ColdFusion Ajax components (now upgraded to ExtJs 3.x), as well as support for Server-Side ActionScript, and a complete ActionScript include library to tap into core ColdFusion services (primarily for Flex integration). Adobe is also in closed beta testing of a new Amazon EC2 instance offering, and has adjusted it's licensing to include cloud computing and VPS deployment scenarios.
Today there are several ColdFusion Application servers (compilers), the most popular is the Adobe ColdFusion server. Other popular options include the open source Railo (a project under JBoss) and OpenBD (NewAtlanta), as well as the enterprise BlueDragon (NewAtlanta), which is built on .Net.
ColdFusion web pages make up around 10% of the web; its success is due to its simplicity and small learning curve. The majority of ColdFusion Developers started off as HTML designers, Due to CFML "ColdFusion Markup Language" being a Tag based language it looks very similar to HTML, which makes it very attractive to HTML coders with very little programming experience

## ColdFusion Advantages

ColdFusion today offers Java developers a faster and more effective way to develop web based applications, as an application written in the ColdFusion language will generally require a lot less code than a Java application. The advantage here is that Java developers can still call all their pre-existing Java objects from within a ColdFusion application.
Less advanced developers who have no experience with Java can use ColdFusion without ever having to know any Java. Highly trained programmers can develop web programs, including Internet and intranet programs, in a much shorter time.

## Developer Community

ColdFusion has had a long history of developer support including Team Macromedia and Coldfusion/Macromedia/Adobe User Groups.
Timeline:
* July 1996 - Washington DC Cold Fusion users group is formed.
* October 1999 - DevCon is held in Boston, MA.
* November 2000 - Devcon is held in Washington, DC. Election results were made available via big screen at the Social Events.
* October 2001 - DevCon is held in Orlando, FL.
* November 2002 - MAX conference is held in Orlando, FL.
* November 2003 - MAX conference in Salt Lake City, UT.
* June 2004 - Ben Forta, Coldfusion's Product Evangilist, demos Blackstone (version 7) to 20 user groups around the world.
* November 2004 - MAX conference in New Orleans, LA.
* October 2005 - MAX conference in Anaheim, CA.
* October 2006 - MAX conference in Las Vegas, NV.
* April, May 2007 - Coldfusion on tour, demoing Scorpio (version 8) to user groups.
* September, October 2007 - MAX conference in Chicago, IL.
* November 2008 - MAX conference in San Francisco, CA.
* October 2009 - MAX conference in Los Angeles, CA.
Additionally there have been numerous CFUN/CFUnited conferences held usually in Maryland around June of each year.

## Table of Contents

* variables
** CFSET
** CFOUTPUT and Pound signs
** Evaluate
** Variable Lookup
* databases
** Setting up Datasources
** CFQuery
** CFInsert
** CFUpdate
** Grouping Query Displays
** Query of Queries
* data structures
** Lists
** Arrays
** Structures
** Queries
** CFDUMP
* control structures
** CFIF
** CFSWITCH
** CFLOOP
* dates
** Creating dates
** Displaying dates
** Modifying dates