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 this.
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 capabilities expanded.
A free downloadable version of this article is available in the TechRepublic Download Center.
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 gateways.
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:
- Application 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.
- Web 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.
- Charting and graphing looks better than ever, with numerous new options for style and display.
- The 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 functions.
- Greatly 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 Brief"
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 include this.
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.