What is ColdFusion
ColdFusion is a system for rapidly developing and deploying Web sites, particularly
those that involve interaction with databases and the presentation of dynamic results.
In a few short years, ColdFusion has become one of the major players in the highly competitive environment of
hosting and delivery (serving) of Web applications. There are many reasons for the popularity of ColdFusion,
but here we focus on those that are most important from a Web developer's point of view.
From its inception, ColdFusion (Coldfusion) was designed to integrate database with Web presentation. Coldfusion
hides a lot of the messy details of interfacing a database. You don't need to devote your valuable developer time
to understanding and programming these details. Coldfusion does that for you. Instead you focus your attention on
the needs of the application. Here are a few ColdFusion benefits for our drill-down example:
With a single command (cfquery), Coldfusion will query a database and store the results in an array. An option to
the cfquery tag causes the query results to be cached in memory so you can reference the data multiple times without
overloading the db server.
Coldfusion provides a simple, yet powerful, mechanism for maintaining the state of each visitor to the site. You keep
track using a unique set of "Session" variables for each visitor. Each visitor (and the associated "Session Variables:"
is tied to a cookie or a token (provided by Coldfusion) that gets passed with each page.
Once the data is retrieved and cached, it's broken into digestible chunks. Another Coldfusion tag makes it easy to
iterate over the array (created by the cfquery) and extract only those items requested for presentation (as defined by
the visitor's Session variables").
Paging through the information is just a re-execution of the iteration process with a different starting point for
the next (or other) group.
All these things are built into ColdFusion and designed to work together. They make it easy to accomplish drill-down
presentation of dynamic data. So, from a developer's point of view, it's much easier to write complex programs with Cold Fusion than with other programming languages.
Application Program Maintenance
The Web changes rapidly, and the sites that don't keep up with the changes will likely languish. An
often-ignored part of Web development is the cost of maintaining a Web application over time -- usually by several different people.
ColdFusion programming uses English-language tags such as cfquery, cffile, cfmail, and so on.
These are easy to read and understand. Coldfusion Programs also tend to be self-documenting.
This means that anyone who knows ColdFusion can look at the program, understand what's going
on, and even modify it. Sites implemented in ColdFusion can realize significant savings in program maintenance costs over the life of the application.
Prototyping and Rapid Development
When a developer interacts with a potential client, the client may have only a general idea of
what he or she wants from the Web site. The power and compactness of the Coldfusion language make
it ideal for quickly prototyping the "look and feel" of the site to show to the client. Using Coldfusion, the developer can easily:
- Design, create, and populate prototype databases if none exist.
- Interface, extract, and manipulate existing legacy databases to build prototype versions.
- Build dynamic-content Web pages using drill-down or other techniques.
It's a simple matter to put together such a prototype, deploy it, then demonstrate it in the client's office,
or even over the phone. So, from a developer's point of view, Coldfusion helps to determine the clients' needs
and demonstrate a prototype solution without investing a lot of time and dollars. And you, as the potential developer, get to "Strut your stuff".
ColdFusion MX
Since my introduction to version 3.0 (ages ago, in 1997-98), Cold Fusion has gone through several major releases,
each with its own set of new features that often setting the pace for others to follow.
The latest version of ColdFusion is part of the MX family and includes some exciting new features.
For an overview, you might want to visit Macromedia's site. Some of the main new features are :
- XML integration -- ColdfusionMX includes tools for manipulating XML data. Prior releases relied on the Web server or custom tags to process XML. New XML functions make it easier to create, manipulate, and exchange XML data from within a ColdfusionMX program.
- Flash integration -- With ColdfusionMX it is easier to develop sites that provide "Rich Content" such as complex data, graphics, animation, and sound. By designing the new versions of Flash and ColdFusion to work together, Macromedia has streamlined the communication between client and server.
- Web Services -- Earlier releases of Coldfusion had the capability to harvest information such as stock quotes, flight schedules, shipping rates, and so on, from other Web sites. But, the process was tedious and inefficient. The interface was problematical in that it would likely break if the target site changed its format or structure. A growing trend is to formalize the interface for inter-site communication as Web services. ColdfusionMX provides the ability to easily and efficiently publish and consume Web services.
- Java Interface -- ColdfusionMX makes it possible for ColdFusion programs to coexist with, interact with, and share data with Java programs.
You can develop parts of an application with ColdFusion, and other parts with Java. So, this environment can serve as a
gentle introduction to Java programming. ColdfusionMX is a self-contained representation of the Web server environment
(everything you need) that can be installed on a local machine with a free developer license.
In our ColdfusionMX/Java world, all the services are written in Java, or are a Java program interface
to an external program written in Java or some other language. The Application Server environment is
provided by JRun, which is distributed with ColdfusionMX and also available as a separate product.
JRun is written in Java. It consists of a kernel and a set of services.
We can write our own functions and business logic as Java programs and add them as new services,
or write our application in Java and use the other services through the JRun kernel.
ColdFusion Web Application Server environment
We may choose to write our Web application programs in ColdFusion -- the advantages of doing so
have already been discussed. We write the program in ColdFusion Markup Language (ColdfusionML),
then save it with a special suffix (.cfm) in a place that is accessible to JRun.
When the Web Server service receives a request from a browser for a .cfm template, it passes the
request through JRun to the Coldfusion MX service -- we'll call this the Web Application Server service.
The Coldfusion MX Web Application Server service reads the .cfm template, interprets the Coldfusion
instructions, and passes the results back through JRun. Now, we can modularize our CFML code, too.
We can have separate templates and functions that can be used by making requests through JRun.
We can also use the other services available to JRun by invoking them with a Coldfusion tag, for
example, a cfquery tag will be interpreted to pass a request for db services through JRun. In this
context, Coldfusion MX is just another specialized service available to JRun -- a service that interprets CFML.

