ColdFusion Splendor/Thunder Public Betas

This post is more than 2 years old.

Unless you live under a rock (or have had the incredibly good sense to avoid Twitter), you know that today we announced the public betas of ColdFusion Splendor (that's the next version of the server) and ColdFusion Thunder (the IDE).

You can grab the bits here: http://labs.adobe.com/technologies/coldfusion/

Unfortunately there isn't a cool logo for the betas but as I've said for a while now that the code names sound like 1980s X-Men, I'm going with this until Adobe Legal or Marvel tells me otherwise:

So first off, some tips. Want to quickly see what's new? Go here: New in ColdFusion. A more focused list is here: CFML Reference - New in Splendor.

So what am I excited about? Here are a few things in no particular order.

The Getting Started Server

This is a new way to try out ColdFusion. Just download, unzip, and run. No installation necessary. You can find docs here. Speaking of the docs - this tripped up both Adam Cameron and me. The default password for the Admin is... admin. The text file that includes the password properties shows a blank value, but apparently the logic is "if blank, use admin", which wasn't something I'd guess.

Script Support for Tags

About. Damn. Time. So every single possible thing now is available in script. Even cfheader. Even custom tags. As an example:

header(name="Access-Control-Allow-Origin" value="*");

QueryExecute

Ok, frankly, I didn't mind the "Query as a CFC" thing we had in CF9 and 10. It matched how other languages handled queries. Yes it was verbose, but honestly it didn't bug me. That being said, yeah, I'm never using it again. Now you can just use queryExecute.

queryExecute("select beer from bar where country=:country and type=:type", {country:'USA', type:'IPA'});

JSON Updates

There were a few changes here. First, structs now will preserve their case when you serialize to JSON. Nice. Second, CF will preserve the type for queries. This has been an issue for a while. In fact, I highly recommend Ben's JSONSerializer as a way to completely bypass JSON serialization in ColdFusion 10. (Well, if you run into issues of course.) It looks like this may finally(?) be licked in Splendor. Please check it out.

Finally, the way ColdFusion serializes queries has been updated to support a new struct form. The docs specifically call out jQuery (sigh), but obviously this applies to ANY JavaScript code. Here is an example output with the new form.

[
 {"colour":"red","id":1},
 {"colour":"green","id":2},
 {"colour":"blue","id":3}
]

You can read about the above changes here.

One more quick note. The REST Enhancements docs talk about how you can customize the serializer/deserializer. This is NOT for REST only! I just did a test where I simply ran serializeJSON on a CF variable in a simple CFM and my custom serializer was used.

Member Functions

So yeah... do you find yourself typing somearr.length() instead of arrayLen(somearr.length)? Now you can do somearr.len(). Member functions have been added all over the place - for arrays, strings, lists, structs, dates, images, spreadsheets, XML objects, and queries.

QueryGetRow

How many times have I written code to loop over the first row of a one row query to turn it into a struct? Too many times. Done.

DDX - 100%

Ok, DDX isn't sexy but I thought it was a cool feature even when it was limited. Now it isn't. Awesome.

Oh, and...

I've been very public about not being a fan of ColdFusion Builder. I think it is an incredible tool and a great IDE. But I'm doing much more client-side development lately and CFB hasn't been very good for that. I can say the new version actually does HTML/JS pretty darn good. Is it enough to make me switch? Probably not. But I currently use Sublime for ColdFusion and I may stop and return to CFB when working with ColdFusion. It is still Eclipse - which roughly feels like the 40-year-old guy at the college bar trying to look cool - but I'm going to give it a shot.

Raymond Camden's Picture

About Raymond Camden

Raymond is a senior developer evangelist for Adobe. He focuses on document services, JavaScript, and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support. You can even buy me a coffee!

Lafayette, LA https://www.raymondcamden.com

Archived Comments

Comment 1 by Randy Johnson posted on 2/20/2014 at 3:00 AM

I had to write some Python lately and queryExecute looks very familiar to that syntax. I definitely like writing queries that way.

Comment 2 by Mary Jo posted on 2/20/2014 at 3:10 AM

These enhancements/changes look great! They really seem to be listening to the CF community on what we want.

queryExecute() in particular I like but don't see a similar improvement for doing storedprocs in script.

Comment 3 by Raymond Camden posted on 2/20/2014 at 3:11 AM

Well, you can do it in script now - that's an improvement, right? :)

Comment 4 by Brad Wood posted on 2/20/2014 at 3:14 AM

You forgot to mention CFClient :)

Comment 5 by Raymond Camden posted on 2/20/2014 at 3:17 AM

Heh.

Comment 6 by Mary Jo posted on 2/20/2014 at 3:22 AM

I assume you are replying to me Ray? Yes, but it's every bit as kludgy as the cfquery script version was, so I always avoid it. I just keep all my storedprocs in their own DAO components so it's not a big deal. Just surprised they left it out!

Comment 7 by Raymond Camden posted on 2/20/2014 at 3:23 AM

Sorry no - it was to the comment about cfclient. ;)

So wait - the stored proc thing - it uses a CFC too, right? Can't you switch to the new script version?

Comment 8 by Mary Jo posted on 2/20/2014 at 3:35 AM

I meant this comment:
"Well, you can do it in script now - that's an improvement, right? :)"

Not sure what you mean in your latest comment. Yes, you can do a storedproc in script, in CF10. It's just not very elegant, similar to the query version in CF10 where it takes up a bunch of lines to do a simple call. I would have liked to have seen a similar tag to the new queryExecute that would be as streamlined.

Comment 9 by Raymond Camden posted on 2/20/2014 at 3:35 AM

Mary, this blog post is about *Splendor* though. My point was that it should be simpler in the new 'script as tags' support, right?

Comment 10 by Mary Jo posted on 2/20/2014 at 3:36 AM
Comment 11 by Raymond Camden posted on 2/20/2014 at 3:40 AM

Mary... I'm not sure what you are saying here. Yes, I know how it is in 9/10. This post is about Splendor. My point was that in *Splendor* it may be better with the tags in script support. I'm not talking about the *current* CFCs.

You get that - right? That I mean Splendor, not what is there *now*.

Comment 12 by Mary Jo posted on 2/20/2014 at 3:41 AM

Ah I see what you're saying Ray. I'll have to read more about what that really means, if that's the case I'd wonder why they would have needed to add the queryExecute then.

Comment 13 by Mary Jo posted on 2/20/2014 at 3:42 AM

I'm Mary Jo BTW - two word first name ;-) Just to confuse people (and computer systems!)

Comment 14 by Mary Jo posted on 2/20/2014 at 3:46 AM

Ah found it, yes, that is indeed an improvement! Cool! That fixes the biggest issue I had with the CF9/10 script version of storedproc which was how unreadable and verbose it was.

Comment 15 by Mary Jo posted on 2/20/2014 at 3:52 AM

I'll still be hoping they add a storedproc version of the queryExecute though. ;-)

Comment 16 by Raymond Camden posted on 2/20/2014 at 3:56 AM

Not too late to file an ER!

Comment 17 by Henry Ho posted on 2/20/2014 at 5:37 AM

DDX - 100%? What is that?

Comment 18 by Raymond Camden posted on 2/20/2014 at 7:36 AM

It lets you to stuff to PDF files - more complex than usual. It has been around since CF8 and I've blogged on it a few times. It currently ships with a few limits.

Comment 19 by Mary Jo posted on 2/20/2014 at 7:55 AM

Re: ER Request

Just point me in the direction to do that! ;-)

Comment 20 by Raymond Camden posted on 2/20/2014 at 7:59 AM

Same place as usual - https://bugbase.adobe.com.

Comment 21 by Richard Migambi posted on 2/20/2014 at 3:14 PM

Good news, I have been off twitter for a week - this is what I missed :)

Comment 22 by Roland Collins posted on 2/22/2014 at 12:26 AM

Ray, how do we submit documentation bugs? It's no wonder so many people have so many horrible impressions about CF. Look at how bad the documentation is just in one little snippet (And it's like this everywhere). The unnecessary pound signs all over the place; Inconsistent quoting. REALLOCATING THE DAMN INNER VARIABLE IN A LOOP IN STRING CONCATENATION!!!!

If we want people to take CF seriously, then maybe the people writing the documentation should as well.

<cfif #type# eq "XML">
<cfif isStruct(#arg#)>
<cfset var result = "<root>">
<cfset var key = "">
<cfloop collection=#arg# item="key">
<cfset var result = result & "<" & #key# & ">">
<cfset var result = result & serializeXML(#arg[key]#, true)>
<cfset var result = result & "</" & #key# & ">">
</cfloop>
<cfset var result = result & "</root>">
<cfreturn result>

Comment 23 by Raymond Camden posted on 2/22/2014 at 12:28 AM

Well, for docs, it is a wiki. You can request access to edit, or leave a comment about the mistake. To file a bug about the server, it is the usual place (bugbase).

Comment 24 by Mary Jo posted on 2/22/2014 at 5:24 AM

OOps, forgot Bubase was for FR too... Added!

I couldn't resist entering the isvalid('integer') issue that they've refused to fix for years again too....seeing as they just closed it before without even fixing it.