Yes, I know I'm not at cfObjective, but I've got some notes anyway. Don't ask how - I'd have to kill you - but here is a quick overview of what was revealed yesterday at the Adobe keynote. Some of this is old, some of this is new. I'm not going to comment heavily on stuff, not until I'm out of NDA and can speak freely, so please do not ask for detailed follow ups until everything is 100% public.

First off, Adobe rattled off some nice news about the community as a whole. You probably saw this on Twitter yesterday. There are now an estimated 750K ColdFusion developers. I'll also point out the news that Kristen posted yesterday about the glowing review of ColdFusion by Gartner. Overall, pretty darn good for a language some people keep wanting to kill off. (Good luck guys, keep trying.)

Now for the notes - taken from the slides, so a bit vague/bad grammar/etc, just deal. :)

*Exposed Service Layer: I believe Terrance is demoing this now at cfObjective. Direct access to ColdFusion services.
Query Service
Document Services
Available via SOAP and AMF.

What I take from this is that it will be incredibly easy to make use of CF services from Flex and other remote clients.

*CFML Enhancements

Server.cfc will support onServerStart()
Nested cftransaction tags
<cffinally>/finally (This lets you add a block to a try/catch code block that will always be run at the end.)
<cfcontinue> (Lets you skip to the next iteration of a loop)
Pass implicit structures/arrays to tags and functions (CF8 added implicit strucs/arrays, but there were restrictions in how well you could use em)
Assignment chaining: a=b=c
When a function returns an array, you can now do: result = myFunction()[x] Obviously this is only useful in cases where you don't care about the rest of the data. If you were doing this often, I'd probably ask why you don't just add a myPrefferedFunction() that would return just the data you need.

*CFSCRIPT Enhancements
Full language support for cfscript, including defining components. JavaDoc style comments for documentation and metadata.

component { variables.event_name =''; public function void init(new_name) { variables.event_name = new_name; return; } }

All of the following work in cfscript:

abort ["message"]
exit ["methodName"]
include "template"
param [type] name [=defaultValue]
throw "message"

Explicit local scope for private variables in a UDF/cfc method.
Implicit getters/setters based on cfproperty.
Import and New keywords.

import com.demo*; user = new User(); user.setName('Adam');

*ORM I don't believe anything new was said here, but again, to be NDA-safe, I'll keep quiet. They did mention access to Hibernate internals, which I think is new (and nice!).


Eclipse-based Editor
HTML, DOM & CSS Code Assist
CFML Code Assist
CFML Insight
CFML Debugging
CFML Refactoring
CFML ORM Insight
Code Snippets
Real-time Log Viewer
Extensible with CFML
Framework Scaffolding
Code Generation
Project Tasks
Whatever you want

*Advanced Caching

Very happy to hear about this. CF's caching support has needed an upgrade for a while.

Object Cache
Save / Retrieve objects from a built-in cache
Programmatic access to cache metadata / properties

Template Cache
Cache page fragment or entire templates

Additional discussion was made of the CFML Advisory board and the upcoming UG Tour. Will blog more on that later.