On February 7, 2005,
Macromedia announced that the latest version of ColdFusion had been released.
ColdFusion MX 7.0 offers up some significant new features, as well as
improvements to existing ones.
If there is still anyone out
there who has not heard of ColdFusion, it is a very powerful and easy-to-use
application server. ColdFusion itself is actually a J2EE application that
interprets a simple, tag-based language called the ColdFusion Markup Language (CFML).
The CFML is compiled to Java byte code and executed on a Java application
server such as JRun (included), WebSphere,
WebLogic, or virtually any other J2EE server. Full details on ColdFusion are
available from Macromedia.
Up to speed
A major focus of this
release is to target new ColdFusion developers and get them up to speed even
faster than before. Considering that simplicity is already one of CF’s chief
benefits, now there are excellent “Getting Started” resources. Two
fully functional sample applications are available, and they do a great job of
showing off the new features along with demonstrating coding best practices.
One of ColdFusion’s weaknesses is that it is so easy to use that new developers
sometimes write poor code. Hopefully these well-done examples will help prevent
Another major area of focus
is in giving developers some very powerful presentation options. Things like
Flash-based forms and generating PDF files are now possible with stunning ease.
And existing presentation elements like charts and graphs have had their
A free downloadable version
of this article is available in the TechRepublic
Luckily, Macromedia didn’t
ignore the more advanced ColdFusion developers. Even though CF is simple to
grasp by new developers, it can also scale to extremely sophisticated
enterprise applications. The list of large customers using ColdFusion now
includes JP Morgan, NEC, Reebok, Victoria’s Secret, and Bank of America among
many others. CFMX 7.0 brings some impressive new capabilities, including the
ability to interact with SMS text messaging and development of non-HTTP event
CFMX 7.0 uses the core code
from the very mature 6.1 release. Most of the existing code was not changed;
the focus was on adding new features. This means that 7.0 promises to be stable
and backwards compatible. I took a relatively large (60,000 lines of code)
application that ran well on 6.1 and had it running on 7.0 within ten minutes.
Let’s look over some of the
new features and improvements that CFMX 7.0 offers. And I’ll also point out a
few things that I was disappointed to see did not make it into this version.
ColdFusion MX 7.0
Probably the most visible
new feature is the ability for CFMX 7.0 to easily create Flash-based forms.
With the use of a few tags (<cfform>, <cfformgroup>, <cfformitem>,
among others), CF will generate sophisticated Flash-based forms. These include
tabbed forms, expandable and collapsible accordion forms, trees, data grids,
and calendar components. The Flash forms are cross-platform and look great, and
are far easier to build than DHTML-based forms. The forms can also execute
custom Flash ActionScript commands if you have the
need. For a developer like me, who has rather rudimentary graphic design
skills, the new Flash forms are welcome addition.
If you’re not a Flash lover,
you can use XForms instead. ColdFusion will take your
form and apply an XML Stylesheet Language Transform
(XSLT) skin to it. This gives you immense control over the appearance of your
forms, and also makes it very easy to make site-wide changes to form display options.
Another highly anticipated
feature is the ability to create PDF or FlashPaper
files with a single tag. Simply wrap your content in the <cfdocument> tag, pick your output type, and ColdFusion
does the rest. The new file will incorporate graphics and layout as it was on
the original HTML page. The generated PDF or FlashPaper
file can be saved on the server, or streamed back to the user.
Macromedia has also included
a robust report builder and report generation capability. Using the report
building, developers can design data reports that far surpass normal HTML
tables. This feature is similar to something like Crystal Reports and is sure
to be another highly-used new addition.
So far, the new features I
pointed out are all visual. But there is one new feature that I think might be
the most significant of all, even though you can’t really see it: event
gateways. ColdFusion can now interact with any network protocol, not just HTTP.
Basically, ColdFusion has become an application server for anything. Macromedia
has included event gateways to let ColdFusion interact with SMS text messages
(used mainly by mobile phones), send data to instant messaging clients, or
execute asynchronous ColdFusion requests. And gateways for additional
protocols, such as Telnet, can be created. Imagine your application
automatically executing code in response to a database record being inserted,
or to a file being added to a directory, and the importance of the event
gateway functionality starts to sink in.
The improvements in CFMX 7.0
are numerous, so I’ll briefly discuss the ones I believe are most critical:
events now allow developers to execute code at specific points during the
execution of a request, such as onApplicationStart() or onError(). The onSessionEnd() event fires when a user’s session
times out and is a capability that has been requested for many years.
services creation has been improved, including the ability to specify
custom WSDL for a web service, and generating document-literal WSDL in
addition to RPC.
- XML data
can now be validated against a DTD or XML Schema using the XMLValidate() function.
and graphing looks better than ever, with numerous new options for style
included Verity search engine has been upgraded, and now supports
alternative spelling suggestions and categories.
- The Query
of Queries functionality is now more lenient about casting your data to
various underlying Java data types, and also allows for specification of
Java data types when constructing a query manually using the query
expanded data validation options, form validation options, and automatic
protection against cross-site scripting attacks. For example, new data
validation types for the <cfparam> tag now
include credit card, URL, European dates, and XML.
“ColdFusion MX and the J2EE
“ColdFusion MX 6.1 Performance
Download a free Developers copy or free 30-day
trial version of ColdFusion MX 7.0 directly from Macromedia using the
TechRepublic Download Center.
Server and administrator features
Some of the most significant
changes in CFMX 7.0 are geared toward server administrators. An entire
application can now be stored as an EAR or WAR file. This includes the actual
ColdFusion runtime, which means you can save and deploy an entire application
including the ColdFusion server.
Along similar lines is the
ability to save and deploy your application as compiled code only. In other
words, no CFMLâ€”just compiled Java byte code. This has been requested for a long
time and now provides a way for developers who sell their applications to
protect their CFML source code.
There is also a new
Administrator API available. Macromedia has created a series of secured
components to allow administrators to programmatically add data sources, enable
debugging, create ColdFusion mappings, and more. When used with source less
deployment and the ability to create EAR or WAR files, it becomes possible to
create a self-contained application. A developer could provide an application
that you simply drop into a J2EE server and configure through a Web interface
using the underlying Administrator API. The customer would not have to deal
with installing the ColdFusion server or configuring settings with the
ColdFusion administrator at all.
Finally, administrators can
now manage ColdFusion server instances from within the ColdFusion administrator
instead of through the underlying J2EE server administration interfaces. This
includes the ability to add and remove servers from a cluster, making it even
easier to create highly scalable and fail safe applications.
As great as CFMX 7.0 is, I
do have a few minor complaints; mainly regarding two things that I really feel
should have been included with the new version. I’ll use this chance to point
them out and urge Macromedia to include these as soon as possible.
First is the surprising lack
of a <cfimage> tag. Many developers have asked for a tag to allow for
image manipulation, resizing, or conversion. There are some custom tags and
third party components that do this, but the fact that ColdFusion is a Java
application means that they could easily have provided hooks into the Java
Advanced Imaging API (which is part of the Java Runtime). This seems like
really low-hanging fruit and I’m a bit shocked that Macromedia elected not to
The other bothersome
omission is the lack of interfaces for ColdFusion Components (CFCs). Many
ColdFusion developers are beginning to take an object-oriented approach thanks
to the introduction of CFCs in ColdFusion MX 6. CFCs support most of the
fundamental features of an object-oriented language like inheritance,
encapsulation, and polymorphism. However, the lack of interfaces means that
developers must manually ensure that any polymorphic sets of CFCs all adhere to
the same method interface specification. This makes building robust object
models with CFCs more difficult. Every ColdFusion developer I know who is
interested in object orientation really wanted this capability, and I hope
Macromedia considers adding it in the next update.
A solid version
Overall, this new release of
ColdFusion looks solid and brings a massive set of new capabilities to the
table. Some of the features will be immediately useful, such as Flash forms and
PDF generation. Others may take a bit of time for their impact to be fully
felt, such as the event gateways. I think that Macromedia definitely listened
to the developer community and delivered many of the most requested
improvements. While there are still a few things that I wish were included, I
would give this version of ColdFusion a strong recommendation. Stay tuned to
TechRepublic for articles going into more detail on specific new features.