Web Development

Why developers should check out ColdFusion 8

Brian Kotek says existing ColdFusion users will find a lot to be happy about in version 8. He urges developers to try the application server and give it an honest look.

Adobe ColdFusion 8 (CF 8) is a force to be reckoned with in the application server space. I've been using ColdFusion for 10 years, and I haven't seen the community this excited about a new release in a long time. The recent release is by far the most compelling version since they moved to the Java platform -- and possibly even the most compelling version ever.

There is a long list of new features and enhancements in CF 8, but in this article, I'm just going to focus on five of my favorites.

Server Monitor

The Developer and Enterprise Editions of CF 8 offer the highly anticipated Server Monitor feature. This might be the single biggest addition to ColdFusion, since it blows away anything I've seen on any other server platform.

Using the beautiful Flex-based Server Monitor interface, you can now watch requests move through a live server. You can see exactly how much memory a session or an application is using, what the template cache is doing, and which threads are taking too long to run.

You can also drill down into live requests and see which individual tags or method calls are slowing things down. It's immensely powerful to watch the monitor and immediately tune your code in response. Is a query getting executed a lot? Cache it! Is a tag or function causing a bottleneck? Now you know exactly what line of code to optimize. Want to write your own code that runs in response to a hung thread, low JVM memory, or anything else? The monitor API will let you.

Exchange integration

It's incredibly easy to integrate CF 8 with Microsoft Exchange. With a few lines of code, you can add events to Exchange calendars; add and remove attendees; manipulate tasks, contacts, lists, and more.

Love it or hate it, Exchange is such a staple for many IT departments that the ability to interact with it -- or even build your own full-blown interface to your Exchange data -- is a big boon to a lot of businesses that use ColdFusion.

AJAX capabilities

Another hugely popular addition in CF 8 is a large set of built-in AJAX functionality. By using simple tags or JavaScript functions, ColdFusion will handle all the chores for creating great AJAX-based applications. CF 8 makes these things a snap: autosuggest, related select boxes, dynamic content updates, and EXT-based datagrids.

One of the coolest features is the ability to create JavaScript proxies for server-side ColdFusion Components (CFCs). You can call a method on the proxy, and under the hood it will make a call to the corresponding method on the CFC. All the work of translating data to and from JavaScript Object Notation, converting ColdFusion datatypes into JavaScript types, and protecting against hack attempts is all handled for you by the ColdFusion server.

There's even an excellent AJAX debugging window that shows everything that is going on. This probably has the biggest "wow" factor for the new release, since developers of any skill level can whip up a jaw-dropping AJAX application in minutes.

Image manipulation

CF 8 takes image manipulation to a new level. Adobe added more than 50 new tags and functions for dealing with images. The capabilities include simple things like resizing, getting image sizes, and converting images, as well as virtually any image-based task you can imagine. This includes drawing, adding text, and adding effects such as blurring, antialiasing, and rotating.

Performance

The best improvement in CF 8 is that it's really fast. The development team really outdid themselves in this area. Depending on the application, it can be up to 10 times faster than CF 6 or CF 7. Some processes, like CFC instantiation, are an eye-popping 23 times faster than CF 7. So even if you upgrade to CF 8 and don't use any new features, your application could easily triple or quadruple its performance on the same hardware. This is quite a compelling reason to upgrade.

Great extras

I'm only scratching the surface of all the amazing new capabilities in CF 8. The list goes on and on to include: generating ATOM and RSS feeds with one line of code; zip file manipulation; built-in Flex Data Services; ColdFusion administrator enhancements; and PDF and PDF form generation. There are three additional benefits to using CF 8 that I will briefly cover.

CF 8 lets you integrate with .NET objects as easily as you can currently integrate with Java objects. The .NET assets can be remote, which means you can use them even if your ColdFusion server is running a UNIX-based OS.

Adobe supplies a series of nice plug-ins for the Eclipse IDE that work with CF 8. This includes simple things like built-in ColdFusion docs, automatic generation of CFCs (including ActiveRecord, Data Access Objects, Beans, etc.), and wizards that will generate a full-blown AJAX application. It also includes a full debugging perspective. In conjunction with the free CFEclipse plug-in, this makes Eclipse the standard IDE for most advanced ColdFusion developers.

CF 8 gives you the ability to do your own thread-based programming. If you have a long running task, you can fire off another processing thread and forget about it; or you can trigger multiple threads to speed up a process and then join them back together and continue.

Download a free edition of CF 8

CF 8 Developer Edition is free, so I urge you to give it an honest look. I believe existing ColdFusion users will find a lot to like in version 8, and new users should try out this application server.

What do you think of CF 8?

Now that I've shared my thoughts about my favorite features and enhancements in CF 8, I want to hear what you think of this release. What features do you like the most in CF 8? If you aren't using CF 8, what features pique your interest enough to give it a look?

33 comments
Justin James
Justin James

One thing I see in these comments is the idea that ColdFusion is a good "language"; so far, all I have seen is that it is a good "framework". Minor, but important distinction. Language features are hard to imitate. Framework features are fairly easy. Look at how quickly ASP.Net caught up with, then far surpassed J2EE in terms of functionality. From what I've read here, CF sounds like a good framework to develop typical business Web apps on top of. But how well does it work when the included functionality is not enough? That's when the capabilities of the language itself are important. what is CF like as an actual language? J.Ja

dcordes
dcordes

Brian, I would certainly have to agree with your assessment of ColdFusion 8. I am developing an Ajax rich single page checkout solution for a number of my clients that just wouldn't have been possible without it. Plus the one line of code image manipulations are just awesome. What's great about Adobe is that they are already talking about and developing ColdFusion 9. This is a great time to be a ColdFusion Web developer for sure.

markb582
markb582

I thought ColdFusion wasn't as flexible as PHP. How would you compare ColdFusion with PHP?

webmaster
webmaster

As the title says; if I had a buck every time I heard CF was dying or dead; I would have more money they Bill Gates. The biggest fear most people have with ColdFusion is the initial price tag (which in reality it's nothing.. compared to the time it takes to develop in other languages and the cost of third party apps to achieve what CF has built in) Not to mention that with CF you can have a single senior developer and then 2-3 junior developers (this is the same as 4-5 senior programmers in other languages). People need to realize that in business 10k is nothing.. you spend that in paper and pens each year easily. I've been doing CF over a decade now, I do PHP, C#, Java, C++ and just about everything else and though I will be the first to say that each language has its place; the reality is that what I can do in CF I can do it in half the time and then hand it off to a junior developer to maintain a lot easier than in any language. (Remember that 90% of an application's life span is in maintenance...) As for no jobs or the market dying; sure there are 5 to 1 in PHP and .NET.. that also means that there are 5 to 1 in people and more competition for the jobs. It doesn?t mean that a language is dying; it just means that it's harder for those that do it to get a better job because there is more to choose from. Sure .NET and PHP have more followers (even though they have been around a lot less time and don't come with some of the futures CF has) but it's because .NET is Microsoft... kind of hard to compete with that when it's Microsoft. For a long time (up until Adobe) CF was owned by smaller companies that didn?t have the budget to compete with Microsoft; but does that make their product better? Not particularly. The truth is that CF is as strong as PHP and as .NET. Each language has its strengths and its weaknesses. Anyone that knows me (and I do a lot to teach CF and I preach it like anyone else) knows that I love CF; but I also love other languages too. They all have their place and in the end it's what the business really needs. Remember that in the end in business it always ALWAYS comes down to ROI. CF gives you things that PHP and .NET don?t; things like speed to deliver; easier integrations into other systems (i.e. exchange). So at the end of the day... use the language you want... they are all good and to be honest none of them are going anywhere. When Java first came out it was said that it would replace all languages and that it would make everything else obsolete... I mean seriously... are you for real? because that wasn?t the case at all. In today's day and age; you have to know all languages (not one or two) because if you get logic; it's all just syntax... so don't count any of them out... your next employer might love the one you hate :-)

brian428
brian428

I think it's just plain odd that a blog entry written back in June is showing up in your email in late October. But whatever. The article in question is really low-brow in my opinion. Top 10 lists like this are deliberately inflammatory attempts to drive traffic. Period. Mr. Hiner didn't even write the article, this is just a link to an already infamous article that has already been put through the ringer. Reprinting this "list" (with nothing more than a link to the original) is in poor taste and diminishes the repuation of TechRepublic in my opinion. The bottom line is that ColdFusion is thriving. Just look around at the energized community and the great apps being built using it. You listen to Hiner and Brandel at your peril.

kveratis
kveratis

Yes it is ironic that ColdFusion appears on the list of "on the way out" skills within the same newsletter with so many references to CF8. I think the opinion that ColdFusion is on the way out is rather misguided. CF8 has really brought some great new features to the table, and ColdFusion does have a number of features that no other platform has. These features actually prompted the company I work for to convert an ASP.NET 2.0 web application to a CF8 web application. The features that I find most compelling are: 1. The ability to dynamically generate flash presentations from content within the database. 2. The ability to dynamically generate PDFs with complex formatting and content. 3. The ability to capture a website within a PDF while preserving its links and formatting without cutting whole sections off. 4. The ability to seamlessly integrate with both Java and .NET (This one really came in handy) 5. The close integration with Flex 2 & 3. Although some of these feature can be accomplished with other platforms, the solutions are not nearly as elegant and robust. Before CF8 I was a die hard .NET fan but once I saw what CF8 could do and how quickly the solution could be created, I was sold.

brian428
brian428

I suppose I'm not clear on what exactly you're trying to get across. ColdFusion is not a framework. There are multiple frameworks for ColdFusion (MVC front controller, ORM, dependency injection, etc.), but CFML is a language. Now, that language does operate at a very high level of abstraction, which is why the vast majority of common web development tasks are so drop-dead easy in CF. However, if you really get into a situation where you need more low-level control, as the other comment noted you have the entire Java API at your disposal (since ColdFusion runs inside a J2EE servlet container like JBoss or Tomcat). You also have the ability to call .NET assets as well if you choose. This is the key to the power of ColdFusion: it makes 99% of common web tasks extremely simple, but gives you the ability to go all the way down to the low level capabilities of Java and .NET if you ever need to.

kevsarg18
kevsarg18

ColdFusion extends very well. It can access .NET and Java classes, com objects. It also makes xml integration dead easy.

rochek
rochek

I have been using ColdFusion since it first began and this is certainly the best yet. It has some fantastic new features for AJAX with the EXT framework built in and support for Spry and other frameworks with the ability to output in JSON format with a single attribute. I also like the built in support for Acrobat and ZIP files. Not too sure about Flash Forms though. I am reserving judgement until I have used them. I am just starting my first CF8 application and it looks like it will take a whole chunk of work away. I

jk2001
jk2001

CF operates at a slightly higher level of abstraction than PHP. That's generally a good thing, because it means that you write less code for most situations, and two programmers can more quickly comprehend each others' code. PHP is a traditional procedural language, which gives you more flexibility to architect your system within PHP. Contrary to what the CF folks here say, you can write very terse PHP code, through code libraries. The "problem" is that you have to learn the library in addition to the regular PHP functions. Both languages allow you to extend the system by adding extensions. CF uses Java, and PHP uses C. I believe there's a Java extension for PHP too. Personally, I use PHP because it's widely available, and you can extend it without dropping into another language. I'm also used to procedural languages. That said, I've adopted some CF-style programming into my libraries. I think CF is a great system with a lot of great ideas.

MikeSQLDBA
MikeSQLDBA

I'm happy to see that Adobe has boosted the performance level in CF8. I work for a federal government agency ("administration", actually) that mandated CF a few years ago. We have a 30Gbit internet connection that used to provide phenomenal performance all day long. Once they moved to CF, the performance dropped through the floor. Once the day begins, the throughput typically drops to 150Kbit (that's right, 3xdial-up). They had expert consultants examine the issue and added new hardware, but nothing helped. That experience turned me off from Cold Fusion. I'm wondering how the performance of Cold Fusion stacks up against other similar technology. Ease of development is important, but a minimum level of performance must be met.

brian428
brian428

As a follow up, I should note that a great many things that CF does with a few lines of code that are much more difficult to attempt in PHP (or any other language for that matter), such as integrating with Exchange, providing full-text search, generating charts/graphs, providing Flash AMF remoting for Flex, integrating with Windows Domains (for authentication, etc.), generating PDFs, and seamlessly integrating with .NET or Java, just to name a few. Even basic things like querying a database or sending an email are extremely trivial in CF.

brian428
brian428

Without something a bit more specific it's hard to answer your question. But as a general statement, anything that you can do in PHP, you can do in ColdFusion (with the bonus that the ColdFusion version would probably be much simpler, faster to build, and fewer lines of code).

Justin James
Justin James

All of the items that you discussed in your article are framework items, things that appear in a library. Now, that library may ship as part of an upgrade to the language itself, but they are not needed. In a nutshell, "language" items are things that work without any "imports" or "using" or "requires" or any other library/class loading mechanisms, "framework" items are things external to that, even if they are used by default. Does that make sense? As someone who has never worked in ColdFusion, I am curious about it. You are not the first person to say that CF8 is really outstanding. If all of these items are truly "language" and not "framework" or "libraries", that would be a very unusual thing in the world of languages. J.Ja

brian428
brian428

I agree with most of what you're saying. One thing to be clear on though, you can indeed write self-contained C, Java, or .NET code to extend ColdFusion via custom tags and custom object calls. However, you also literally have the entire Java Runtime API at your disposal from within any CF code. Which means that, at runtime, I can call absolutely any Java API method directly within my CFML code. It's quite a bit more powerful than simply being able to call a pre-packaged component that happens to be written in Java. Since this is kind of a big deal I just wanted to make sure the difference was clear. :-)

brian428
brian428

I'm not exactly sure what you're getting at, because ColdFusion has nothing to do with network bandwidth. Something else was going on, and I think you're assuming CF has something to do with it when it really can't. If your network bandwidth is being used up, something has to be doing it. ColdFusion is just an application server; it doesn't use up any network bandwidth except in servicing incoming requests. Now, if some bad developer wrote something that fires off 10 million automated HTTP requests or something, that would eat up your bandwidth. But that could happen on any application server. The bottom line is, what you're describing doesn't have anything to do with the ColdFusion server, unless someone deliberately wrote code to use up your bandwidth or the operating system on the app server was compromised and is being used by spammers or botnets.

davidmartinomalley
davidmartinomalley

Hi Mike, I've heard the performance gains over CF 7 are phenomenal - I've heard (granted anecdotal evidence) of servers being removed due to the performance gains. My CF User Group will be hosting "Host My Site" in November and I'm sure this will come up - the link will be posted soon: www.cfugitives.com - if you're interested in joining us (will be broadcast for all to attend). Cheers, Davo

arroyo45
arroyo45

I had a lot of my developers tell me that Coldfusion was not used anymore and that the tendency was leaning towards MySql and PHP

williambq
williambq

randomnumber = (randrange(1,10)); MYSUPERTHREAD.SLEEP(randomnumber); thethreadname = MYSUPERTHREAD.getName(); isitalive = MYSUPERTHREAD.isalive(); getp = mysuperthread.getPriority(); MYSUPERTHREAD.setPriority(1); getp = mysuperthread.getPriority(); writeoutput(' Sleeper thread ' & thethreadname & ' is sleeping for ' & randomnumber/1000 & 'seconds.... ');

Neon Samurai
Neon Samurai

Mind you, when I was working with CF, I didn't have the programming background to think of things in terms of framework versus low level language versus assembly language. I always just concidered CF a tag based programming language since it was combined with the tag based html layout language.

jk2001
jk2001

I haven't used CF in a while, but I thought it was a slightly lower-level framework than and MVC framework. That is, it's a higher level of abstraction than a general purpose language, but lower than a specific framework like MVC. My opinion: no MVC.

rochek
rochek

Just to clarify the issue on frameworks, since over the years ColdFusion has been used to build applications in both good and bad ways. For those who are looking to use best practice there are several frameworks available. Fusebox (www.fusebox.org) is the one I use. It implements the Front Controller design pattern and makes it easy to implement MVC too. Recent enhancement allow the use of DAO and gateway patterns in the model. If you are looking for a more object oriented framework then MachII or ModelGlue might suit you.

brian428
brian428

Just to be clear, ColdFusion doesn't force MVC on you any more than PHP, or Ruby, or Java force MVC on you. There are MVC frameworks for CF (many of them, in fact) as well as ORM and DI/IOC frameworks, that you are free to use or not use as you choose.

Justin James
Justin James

This explains my question very well, thanks! It is always nice to learn a bit about something new. :) J.Ja

davidmartinomalley
davidmartinomalley

What IS ColdFusion? In my opinion: It's technically an application server. CFML (markup language) is the language, you can also use CF Script. Is it a framework? It doesn't separate model/view the way many frameworks do - I personally prefer to call it a productivity suite. It's real power is exposing its many features with a minimum lines of code. Just my .02 on the matter. Davo

a.haskell
a.haskell

ColdFusion sits in an odd place. Technically its a language; it has a compiler and to achieve the functionality Brian has discussed you do not need to import anything in your code. That being said ColdFusion's compiler is really just a bunch of JAVA libraries that compile down to java bytecode. At the end of the day ColdFusion combines multiple opensource and proprietary JAVA libraries, and then exposes those through an abstracted set of Tags and functions which is the ColdFusion language. JAVA as a platform is strong and will last for a long time but if you look at the landscape we're moving past Java as a language. ColdFusion is one of the languages folks can move to that allows you to leverage the Java platform with an easier, cleaner, agile language. ColdFusion has more of a framework feel than something like Groovy or Jruby but at the end of the day they all are dynamic languages that allow you to write extensible, scalable code and drop into Java when times call for it. It is worth mentioning that in Groovy it is insanely easier to drop into Java than ColdFusion.

brian428
brian428

See, ColdFusion is a bit different than other application servers becuase it runs on top of Java, and its language (CFML) is compiled to Java bytecode at runtime and executed within the servlet container. That said, everything I mentioned is part of the core CFML language in ColdFusion 8. Have a look for yourself at the CF Getting Started site and check out some of the code examples that uses these and the other capabilities: http://examples.adobe.com/cf8gettingstarted/experience/snippets.cfm

brian428
brian428

This rumor has been floated by some folks but it isn't true. In any event, you can use MySQL just fine with CF.

arroyo45
arroyo45

I am not a programmer my self. I try to support them with their needs. That is the reason why I like these Blogs, because I get to find out for my self what is going on in the Programing world. As for the people tricking me or leading me well... I am still the owner and BOSS so I get to fire them!!!

a.haskell
a.haskell

I work for a Fortune 30 company we have about 25-30 CF developers and I just completed an entire month of training to retool mainframe developers to use ColdFusion, we have a similar intiative for Java right now as well. I'm pretty sure ColdFusion is still very much in the loop.

Editor's Picks