Adobe ColdFusion 7MX
Home Tutorials Reviews Weblog

Feature: Macromedia ColdFusion 7 latest version upgrade and where it fits
Evaluation: This is a super upgrade to ColdFusion with many high potential new features.


Macromedia will be introducing ColdFusion Mx 7 this week and it will be a strong entry in the server side application development tools market place. ColdFusion is a front end tool for J2EE and Java application servers (Macromedia Jrun 4, BEA Weblogic 7.x, 8.x and IBM Websphere 4.x , 5.x.). ColdFusion 7 also has the virtue of running on several versions of Linux, Solaris, Windows XP and 2000, Mac OS/X and IBM AIX for both development and delivery/operations.

For developers new to ColdFusion, it uses a tag language similar to HTML called CFML-ColdFusion Markup Language. So it is analogous to such popular server side web development tools as ASP, JSP and PHP. And in fact, ColdFusion helped lead the web development world into the 3-tier model logic back in the early 1990's where the presentation logic was moved to the server along with the backend database bindings and processing logic which then was served over HTTP and onto any client browser. In effect, ColdFusion acted as a simplified front end to access complex Web server and CGI logic.

This Web-based model has gained greater ascendancy as organizations need to deliver info anytime, anyplace and on any platform - Windows, Mac, Linux, and Unix. The open and standard Web interface makes this possible. It also helps that users have found the Web GUI interface easy to learn and remember how to use. Finally, the Web model is helped by the fact that the latest updates to program logic are delivered to one place - the server and then delivered just-in-time to each requesting user rather than the operational nightmare of having to keep thousands of client machines updated with the latest version of a smart client application.

The disadvantage of the Web model is that offline operations are difficult to do because most of the application's logic resides almost exclusively on the server. In addition, there are inherent network delays that make talking back and forth between client and server more time consuming than the rival smart client approach which delivers much of the logic to a workstation (Mac, PC, kiosk with embedded processor, etc). So the Web model has been working over the past few years to deliver ever larger chunks of application code to the client - but still centrally served in the just-in-time method. These chunks of code are applied to discrete operations like data form validations; delivery of reports; running UI components like dropdown calendars, tree lists, and menus locally rather than having to interact through the server as in earlier Web programs.

ColdFusion has helped lead the way in this distribution of more tasks down to the client - and those capabilities are enhanced in version 7. In addition, ColdFusion has also simplified access to the very scalable, reliable, and secure backend operations represented by Java JSP and J2EE servers and now Web Services. This is no small benefit as J2EE and Web Services coding can become non-trivial quickly. Finally, ever increasing bandwidth and the explosion of mobile telephones and other handheld connected devices has created an increasing demand for delivery of program interaction to these devices through SMS, WML, and other messaging frameworks. So it helps to think of ColdFusion as a front end tool that simplifies access to a wide variety of distributed processing resources. Certainly in the features of the new version 7.

Application Development Tools Divergence

Now some readers will say who needs another application development tool ? - we have too many already. It is Eclipse/JBuilder or Visual Studio - game over. Well, as in the Hertz TV commercial - not exactly. As has happened with software technology over the past 40 years, the bar has been raised again. And the old players, with their huge development IDEs, are seriously pressed to meet the new development demands for mobiles, offline/online and other embedded devices with tack on extensions. We have already mentioned the problems in the presentation layer as tasks such as validations and adhoc calculations are moved from server to client and back again.

Application development is in this flux again. The history of timesharing, file server, 4GL, CASE, client-server, Web server - and now SOA and ESB architectures among the high points is not helter-skelter but rather is the rational response to changes in technology and its economics over the past 30-40 years. As new technical and business opportunities present themselves, tools change or are replaced.

For example one of the major technical and economic changes is the huge market of embedded devices that are now getting connected. Mobiles and handhelds lead the way as embedded computing devices (which now exceed annual PC sales by 10 to 1) are empowered with ever greater bandwidth by means of 2.5G, 3G, and WiFI/WiMax initiatives. Also in the 5As(Anytime, Anywhere, ...) there is implicit but not stated an Any object requirement for new systems. Any object means more than the familiar text and numeric fields. Any object means adding to the mix objects like images, signatures and drawings; speech inputs and outputs along with rich audio; video and animations; spatial and location information plus many other objects. And of course it is not unfolding neatly according to any plans in Armonk, Helsinki, Redmond, or Tokyo. Who would have guessed that games and video would be the drivers in the mobile phone market ahead of location functions or bare bones speech enablement ?

Macromedia comes to the table with ColdFusion 7 and argues rather effectively that their tag-based, front-end experience plus cross platform development and delivery capabilities puts them in a neat position to deliver the new and enhanced application development environ. And ColdFusion 7 delivers better object and forms handling with the Flash form option including development extensions for Dreamweaver Mx 2004. It also touts better reporting with a new visual banded report writer tool which can now deliver to Adobe PDF and Flash Paper as well as HTML pages. Finally, ColdFusion 7 adds important support for SMS-based mobile text messaging and IM-Instant Messaging support. In sum, ColdFusion is making some strong steps into the new 5A's application development world.

The New Feature Details

Many of the new features in ColdFusion are deliberately designed to meet the demand of 5A's application development. After all, Macromedia is a leader in RIA-Rich Internet Application development tools with Flex and Central. Thus its Flash .SWF file format has the ability to deliver more Anywhere and Any Object functionality - and ColdFusion 7 certainly takes advantage of these capabilities in its new CFFORM and CFREPORT with Flash, XForms, and FlashPaper respectively. However, another 5A's attraction of ColdFusion 7 is the greatly enhanced Any Device services added. This allows simple CFML command extensions to bring very powerful mobile phone, instant messaging and notification services to existing or new ColdFusion systems.

In addition there are at least a half dozen improvements to existing capabilities:
- A visual banded report designer speeds report creation/editing;
- extensive revisions to CFREPORT including easy output to PDF or FlashPaper;
- numerous improvements to the CFGRAPH engine used in report designer;
- two improved options for forms with FlashForms and XForms;
- enabling edits of CFFORM statements with Dreamweaver 2004 extensions;
- other enhanced editing of ColdFusion apps in Dreamweaver;
- new deployment options in EAR file containing ColdFusion runtime;
this is clearly a super upgrade to ColdFusion significantly enhancing its forms, reporting and deployment options. In effect, Macromedia is distinguishing ColdFusion from its ASp/JSP/PHP rivals. It does so by continuing to maintain the tag-base familiar to so many HTML and web developers but extending that by front ending expanded Any object, Anytime, Anywhere and Any device features.

CFFORM: New Input Capabilities

FlashForms is a major addition to ColdFusion 7 because it allows users create and deploy rich, multi- step forms that cut down the number of network roundtrips back to the server and thus improve response time. But also Flash Forms provide users with easy to-use form controls such as data grids, tree controls, tabs and calendars which are still not available in regular html.

XForms on the other hand, separate logic from presentation allowing stylings as well as form functionality and validation to be shared and reused even across projects. In general form and parameter validation has been significantly enhanced through new Dreamweaver extensions. As well these extensions simplify the form design process in a fashion that will be familiar to Flex developers. However, this is still not the drag and drop Visual forms designer developers may be used to from Visual Basic, PowerBuilder or JBuilder experience - but reserve judgment until you try it. Cold Fusion 7 removes a lot of the tedium of positioning, alignment, and styling changes. Particularly attractive is the ability to apply stored and reusable skins that apply a look and feel.

However, there is some concern about bridging between classic CF and the new Flash Forms implementation that only detailed testing with the final product will bring out. But clearly Macromedia has boosted not just ease in forms design; but also easier backend connectivity to databases and Web Services. look to our follow up review to spell out how this plays out.

CFREPORT: New Reportwriting Features

With version 7, ColdFusion has two ways of generating reports - dynamically with the traditional COLD Fusion tags and methods or with the new Windows-only Visual Report designer that creates a .CFR report file that can be called with ColdFusion tags and included in various output. Of course as alluded to at the top of this review, the various outputs includes PDF and FlashPaper files. And because the output type is a simple one attribute setting, switching from Excel to flash to PDF will be trivial.

Now the Visual Reportwriter is attractive because it appears to be a free stand alone product that allows developers familiar with Crystal Reports or other page layout report writers to create rich reports. This includes summary and sorted groupings and the inclusion of charts and plots in the reports. And as noted it is simple to redirect report output from HTML to PDF or Flash.

But one of the other attractions of Cold Fusion is its robust backend connections. ColdFusion queries and connections can access data not just in SQL sources but also XML, and a variety of other data formats. The full arsenal of ColdFusion data access commands are at users disposal. This includes UDF-User Defined Functions, CFC-Cold Fusion Components with their Web Services and other easy connectivity options along with traditional XML, databases, and other data connections. And now with event gateways (see just below) the data source options are extended to mobile and WiFI resources.

The downside to data access in ColdFusion is the lack of an organizing framework like ADO.NET in ASPX or JDO in some JSP providers. We have seen mixed results with such frameworks so only further test will tell how Cold Fusion compares with the traditional server-side tools.But again it is evident that Macromedia has added significant report writing flexibility in this upgrade.

Event Gateways: Any Device Coding Connections

As we implied in our overview of Application Development Divergence, there has been the need for tools to provide Any Device support. One of the more powerful features of the new ColdFusion 7 is the provision of Event Gateways that allow ColdFusion to interface with other network protocols using asynchronous messaging. macromedia has provided the SMS and two Instant messaging gateway including extra software to make building and testing gateway apps simpler. The diagram below describes the SMS gateway:
Macromedia supplies SMSC center test software, a mobile phone emulator along with the basic SMS gateway protocol. But even more important,ColdFusion provides the framework for responding to callbacks and asynchronous messaging required to make the interaction fairly straight forward than coding in C/C++ or Java. The key is that this protocol takes care of some of the critical issues such as authentication, encryption and appropriate handshakes with the SMSC server and mobile phone.

And making development for SMS simpler can have large payoffs in such applications as event polling and surveys where cellphones are used to respond to presenters questions. Or event notification such as warehouse shipment arrivals or availability of standby seating are a natural. And of course sports scores, stock market quotes, and bank account queries are all part of the potential application mix.

The other Any device protocol that ColdFusion 7 supports is IM-Instant Messaging through either an XMPP (Extensible Messaging and Presence Protocol) gateway or a Lotus Sametime gateway enabling connectivity to this popular IM service. IM is important when determination of presence is important in an application - operator at a control station, team in place and ready to go, and ongoing status reporting on an critical workflow. But IM can be used to poll devices set up in adhoc or changing networks to establish readiness or status reporting. IM is essential in BPM and workflow processing systems - where presence and availability are critical questions.

Again Cold Fusion has a template for both protocols and testing emulators so that an IM application can be proven locally before being expanded to system wide testing. In addition, Macromedia has supplied some example implementations that show how IM can be exploited. Finally, the templates them selves can be extended for specific needs.

In fact, this is the third key capability in ColdFusion 7's Event gateway implementation - users can build their own. customized gateway protocols. ColdFusion 7 provides the basic asynchronous messaging mechanism, which can be used with many kinds of event or messaging resources. As noted above ColdFusion provides complete application templates for SMS and two instant messaging protocols. But it also has lightweight sample gateways for Java Sockets with TCP/IP , JMS-Java Messaging Service, and also various FileSystem notification services. Java savvy developers can use these examples to develop their own protocols that can then be called directly from ColdFusion

In sum, ColdFusion 7 provides a front end to Any Device connectivity. But in addition, the program provides the flexibility of third party or roll your own protocols. This is an attractive addition to Any Device capability - especially given that Flash and PDF are available in other improved CF modules such as CFREPORT, CFDOCUMENT, and CFFORM. Both Flash and PDF allow not just cross platform but increasingly cross device support. Also both provide standalone, offline runtimes so some functionality can be delivered offline to mobile workers or anytime and anywhere users.

Summary

Cold Fusion has thrived from its very beginning by making the the strange and complex appear familiar and simpler to its users. For example, originally, Web database connectivity and complex backend stateless-to-stateful operations were encapsulated in CFML tags very familiar to Web developers. Cold Fusion 7 continues this tag-base and front-end tradition by simplifying some of the thorny problems of distributed presentations and expanded backend (think messaging and Web Services) processing. Clearly ColdFusion MX 6 started the ball rolling towards differentiating ColdFusion from its many ASP, JSP, PHP and other Web server-side cohorts. And this super upgrade in ColdFusion 7 clearly accelerates the trend towrds separating itself from its ASSP/JSP/PHP brethren. However, Open Source users will be disappointed to see that ColdFusion 7 does not support the popular Tomcat, Resin and JBoss servers. And so final verdict on how well Macromedia ties this all together and makes it perform awaits another review which tests the final product.


Top of Page  Home  Tutorials  CF Overview  CF References/Links