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.
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.]
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.
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!).
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.
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.
The Media Player tag has been updated to include HTML5 video format while the map tag has the option to find the users geolocation.
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.
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.
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.
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.
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.