ColdFusion is software. The language is CFML.
This distinction might seem pedantic to some, but it is important.
In addition to Adobe ColdFusion, there are also two other CFML engines which are both viable for use: OpenBlueDragon and Railo, (licensed GPLv3 and LGPLv2 respectively).
These three are all Java based, but also worth noting is New Atlanta's BlueDragon.NET, for anyone wanting to use the CFML language on the .NET platform.
To help guide these engines, and ensure the language remains consistent, there is the CFML Advisory Committee, which is working directly with Adobe, Railo, and openBD to document what the core CFML language is/should be, and what features are considered vendor-specific enhancements.
The key message here is that CFML is a transferable skill, and a growing language, not a dying one.
So, is it worth learning CFML for a career? Definitely! Here's why...
ColdFusion/CFML has the double-edged benefit/curse of being very easy to use, and doesn't force particular development practises - you are free to work however you like.
This means that it is easy for non-developers to get going with it and create usable software that isn't brilliantly programmed, which can sometimes give CF a bad name if this is what experienced programmers are exposed to.
From a career perspective, this can be a benefit: if you're a strong programmer and you learn CFML, in the CFML jobs arena you've instantly got a significant headstart.
CF is not declining, despite some claims - ColdFusion has an active market on internal intranets, which may not be as visible but is definitely there. Similarly, government agencies make up a large part of the CF user-base, especially in the US.
With Adobe currently developing CF9 (private alpha/beta stage), and with CF10 and CF11 both in planning - it's not going away any time soon!
Also Railo's recent teaming up with JBoss (RedHat) is hoped to attract growth of CFML in that direction, by providing Java developers with a solid RAD language for the web.
A couple of key points so far:
- CFML is a transferable skill, and a growing language.
- Adobe have committed to supporting and improving ColdFusion for a long time.
- Even if a company drops CF, this no longer means leaving CFML entirely.
So, now on to why CFML is a valuable and worthwhile career skill...
General ColdFusion and CFML benefits
Great Integration
CFML can integrate very easily with lots of technologies out of the box with little-to-no configuration, and plenty of easy to use projects for adding even more functionality via other languages.
Flex, being an Adobe product, is perfectly partnered with ColdFusion, and much easier to use via CF than with other technologies/languages.
Groovy is a dynamic language growing in popularity, and cfgroovy by Barney B makes it incredibly easy to mix Groovy and CFML, utilising the best of both languages.
Hibernate support will almost certainly be built-in with CF9 and Railo 3.2, and can already be used indirectly.
Java and its libraries are very powerful, and CFML lets you harness that power with great simplicity - a single command (either cfobject
tag or createObject
function) creates a Java object which you can easily work with inside your CFML. And often you don't even need that single command for using Java methods on normal variables, since (for example) a CFML string is also a Java string, and can already use the Java methods directly on it.
.NET - for best intergration you'll want BlueDragon.NET which runs in the .NET framework, but Adobe ColdFusion also has native .NET integration you can use.
PDF is also very easily used with in CFML via the built-in cfdocument
and cfpdf
tags.
PHP and Ruby are both popular languages, and there the Scripting for ColdFusion projects makes it easy to use either of these languages within your CFML code.
Web Services have always been ease to create and consume with CFML, and with the popularity of JSON, CF8 adds abilities to easily use and produce this.
Great Frameworks
There is an ever growing list of CFML frameworks covering a huge variety of concepts:
- MVC (ColdBox,CFWheels,Fusebox,Mach-ii,Model-Glue)
- ORM (Reactor,Transfer,Data Faucet)
- AOP/IoC (ColdSpring,LightWire)
- TDD (cfUnit,MXUnit,cfcUnit,RocketUnit)
- BDD (cfSpec)
- and many many more!
Great Community
Although no where near as large as many other languages, the CFML community is nevertheless a fairly strong and friendly one, spread across mailing lists and blogs, and of course the various conferences that are held around the globe.
Great Projects
In addition to the assorted projects already mentioned, there are a lot of interesting projects available for CFML. Just browse through RIAForge's CF category or the CF OS Project List to see the great variety of intriguing uses people have put CFML to.
Getting Started
If you decide you want to experiment with CFML, it's very easy!
Both Railo and OpenBD have quick-start editions that allow you to download, unzip, and start the server within seconds - no complex installation, no conflict with existing servers (Jetty picks a unique port around 8888), just run the script and go.
(see Railo Express and OpenBD Ready2Run)
For ColdFusion you can install it for free - the Developer license restricts you to three IPs, but provides all the features. There is an installer to step through, but it's not too bad. Best for a new developer to grab Coldfusion 9 beta, and also the new ColdFusion Builder IDE.
If you get stuck with anything, there are plenty of places you can get help:
So,
if you are seeing job postings for CF in your area, you should definitely go ahead and add this tool to your belt! :)