Sam Farmer

Growing up I never imagined I would play bass guitar for the Dave Matthews Band. And indeed it never happened.

So What is ColdFusion 10?

February 24, 2012

Coming 20 months after ColdFusion 9.0.1 — which was way more than a ".0.1 release" — ColdFusion 10 public beta is here. So what is ColdFusion 10? Lets start with looking at the new features.

New Features

REST webservices
Native support for REST webservices from within a ColdFusion component (cfc) is as simple as adding a few attributes to the component, functions and arguments. Full support is baked in for the HTTP request model of POST, GET, PUT, DELETE, HEAD and OPTIONS. (And I'm not shouting thats how HTTP requests are referred to :) ).

In the never ending quest to communicate faster comes WebSockets. In the middle of the last decade came AJAX which sped up web applications. Now comes, WebSockets which takes the fast and offers very fast in return. And it does it by sending less data around. How? WebSockets communicate over TCP and allow the server and browser to both send messages to each other when needed. With AJAX similar functionality is achieved by polling -- sending a request from the browser to server somewhere between every 1 to 60+ seconds. WebSockets offer a better way.

The ColdFusion implementation has some niceties; sharing of authentication over HTTP, supports browsers without a native implementation (hello IE!) via a Flash plugin; supports both subscriber and publisher model and point-to-point communication. While other features use third-party tools or open-source libraries, WebSockets is one area where the ColdFusion team have written the implementation completely.

The default J2EE container is now Tomcat replacing the aging JRUN. This will make little difference to many but will make it easier to deploy ColdFusion to many cloud based systems both public and private.

While its always been possible to write secure ColdFusion applications the native support for OWASP ESAPI functions will make it easier and help meet the ever changing security threats. Features also include items such as settings to make session cookies be http only and SSL-only cookies as well as harder session techniques such as sessionRotate. [Updated 2/26: Originally I wrote OSWAPI instead of OWASP ESAPI. Thanks to Jason Dean for the correction.]

ORM Search
Full-text search, powered by Lucene, comes to ORM entities. Searches can use boost, sounds like, range and other features of Lucene searches including speed.

Every developers favorite JavaScript technique even when they are not sure what they are is now in ColdFusion.

Java First Class
JavaLoader has now been "Mandeled" and built into the language allowing for loading of Java classes placed anywhere on the system. That's great for ColdFusion developers. What is great for Java developers is that Java can now access CFCs from within a Java class. (And if you are both a ColdFusion and Java developer you are golden!).

Hotfix Updater
The often complicated hotfix process is now as simple as clicking Download and Install. Woo-hoo.

The Almost New Features While technically improvements to existing features some of the improvements go so deep that they feel more like new features.

Priorities, cron commands, chaining, application level tasks, grouping, improved error handling the list goes on. While previous attempts at using the scheduler for complicated business needs felt like using duct tape, these improvements should usher in a brand new world.


Language Enhancements
Over twenty enhancements in all but my top three are using colon in implicit structs, dynamically calling object methods in script and implicit notation for getters and settings.

Display Improvements
The Media Player tag has been updated to include HTML5 video format while the map tag has the option to find the users geolocation.

HTML5 Charting
ColdFusion charts look sharp again. Real sharp. Such are the changes this one came close to being in the "Almost New Features" category.

Using regions and advanced configuration of Ehcache is much easier. But the biggest change is that cfquery caching uses Ehcache by default.

Exchange 2010
Support has been added for Exchange 2010 servers.

Searching with Solr
Unlimited custom fields. Importing data directly from databases and then accessing via ColdFusion search tags are just a few of the niceties added here. On a related note Verity is no longer shipped.

SOAP webservices
Axis 2 webservices are now supported along with Axis 1 webservices. From what I understand this was quite an engineering feat to maintain backward compatibility while providing support to more modern techniques.

Whats missing

The hardest part of software (and I include languages and frameworks in this) is deciding what not to add or upgrade. With the caveat out of the way I am disappointed that the engine for converting HTML to PDF, and the underlying JavaScript libraries behind the various cfajax functionality where not updated. Depending on your applications needs these may be big omissions or no big deal at all.

So, what is ColdFusion 10?

ColdFusion is often easier to think about as a tool-chest and one that keeps adding useful features and improvements with each release. ColdFusion 10 continues this with a pretty wide set of new features and improvements but I think three additions are quite notable.

First, the language enhancements, and I'm including closures and Java integration here, point to a determination to make the syntax lean and current. That is a good thing.

Second, the addition of REST baked in, points to ColdFusion servers playing a role both in talking with other API's but also providing a solid back end to the increasing number of front-end JavaScript MV* frameworks. It feels as though the ColdFusion team felt this was a vital area to stay current in (and some may argue come-up-to-current in).

Third is the addition of WebSockets. Due to its release cycles ColdFusion is rarely on the cutting edge of web technologies. WebSockets are cutting edge (as proof they don't work in IE9 -- although ColdFusion 10 makes them work) and it feels exciting that ColdFusion developers can start to build WebSocket based applications and functionality.

ColdFusion 10 is now in public beta.


Re: TomCat "This will make little difference to many" - what makes you say that?

By: Sami Hoda 02/24/2012 10:33 AM
Do you know if CF10 will expose its datasources so that Java classes can use them? Understand there are unsupported ways of doing so in earlier versions, but this was something that has always bugged me.

By: Matthew Lesko 02/24/2012 10:37 AM
I am also surprised that the PDF tools weren't updated. The entire PDF toolset should be in ColdFusion. I use it all the time and have been waiting for all the tools to do the 508 compliance stuff. I am excited about using CF10 though. I hope our data center skips CF9 and goes directly to 10.

By: RogerTheGeek 02/24/2012 10:53 AM
@Sami: Because a significant number of developers have little or nothing to do with deployment. @Matthew: I don't know. That would be pretty cool. @RogerTheGeek: Hope you skip straight to 10 as well.

By: Sam Farmer 02/24/2012 1:36 PM
Well written and insightful overview, Sam. Thanks.

By: Julian Halliwell 02/26/2012 5:07 AM
Sam - would agree but also disagree. Good programmers have a local dev environment, and a shift from JRUN to Tomcat will be a big change for them locally. You can't think Tomcat is only about production environments.

By: Sami Hoda 02/26/2012 3:24 PM
@Sami: Good point. I think moving to Tomcat is a good, positive move. Just that a lot of developers will use the installer locally and have CF up and running and not care much what CF is running on.

By: Sam Farmer 02/26/2012 8:08 PM
Some comments have been lost over the years due to moving hosts.


More blog entries that I have written.

Code coloring by PRISM.