A Look Inside ColdFusion 9 - The 'Centaur' Release
“ColdFusion is still around?” With over 100,000
customers and 778,000 worldwide developers, the ColdFusion community
is in fact thriving, according to Terry Ryan, Adobe
Platform Evangelist. Adobe last week unveiled the public betas of ColdFusion 9 and ColdFusion Builder, a new, Eclipse-based IDE that provides a unified, customizable and extensible development environment to build applications, manage servers and deploy projects. ColdFusion 9 adds Hibernate integration, a new Adobe AIR application for central server management, as well as local and remote database synchronization with Adobe AIR.
DZone caught up with Terry to get an update on some of the new features being provided in the ColdFusion 9 'Centaur' release.
The complete transcript of the interview has been provided below:
DZone: We're sitting today with Adobe platform evangelist Terry
Ryan. Terry, can you tell us a little bit about yourself and what you
do at Adobe?
Terry: Sure. So platform evangelist just means I have two roles with Adobe: One, I talk about the platform within the higher education audience. So basically the entire platform from Flash Player, Flex framework, Catalyst, ColdFusion, the whole nine yards, I talk with higher ed customers about. On the other side of the house, I'm also the ColdFusion evangelist, which means I talk to our customers about ColdFusion independent of being higher ed. So basically I talk about ColdFusion to everybody and everything to higher ed. So that's my current position with Adobe.
DZone: Gartner recently issued a report recommending that customers continue their investment in the ColdFusion platform, but it appears that there is still this perception of ColdFusion being a legacy platform. What's changed?
Terry: A lot of things have changed. One, with Adobe taking over ColdFusion from Macromedia, we've really invested a lot of effort internally with the product. So there's that. There's also the fact that ColdFusion continues to innovate in terms of what it can talk to, what it can interact with, and not just innovating the communication, what it can talk to, what it can interact with, but also making that communication easy.
So one of the examples I was talking about was Microsoft Exchange integration in our previous version of ColdFusion, ColdFusion 8. I've had to, in my previous positions, before I worked for Adobe, have had to do that interaction myself and had to do that by hand without having just a CFExchange tag, and it's a lot of code, it's a lot of writing, it's a lot of work. ColdFusion 8 comes along, and now it's two lines of code. And that's just the sort of innovation that the ColdFusion engineers add to the product, where they just basically take something that takes a long time, it's hard, that's a lot of work, and makes it easy and quick.
So I think we've got that type of innovation along a whole number of communication channels, whether it's .NET, Java, other backend solutions like LDAP, Exchange, and going forward with the next version of ColdFusion, ColdFusion 9, we're going to bring that type of easy to interact with technology to things like Java portlets and SharePoint and more enhanced PDF integration and working with spreadsheets, Excel and Open Office.
So, we keep moving, we keep moving the product forward, so it hasn't stayed still since the last time someone may have looked at it.
DZone: With the availability of free or near-free tools for developing PHP, ASP.NET, and Ruby on Rails applications, is there still a need for a paid tool kit like ColdFusion?
Terry: Well I definitely think there is, or I wouldn't be working for Adobe, right? But to answer that, it comes down to it's a value proposition. We think our argument is that through ColdFusion, we add value to your development process. We can point to and say, "Write an application in ColdFusion, " and you're going to get something like 88% less lines than in a Java application.
We compare very, very well in terms of all those other technologies in terms of your productivity. So then it comes down to: Is it worth--the productivity gains you get from ColdFusion--is it worth the cost? And we've got 100, 000 customers, 778, 000 developers who would answer yes to that. So there is definitely still a place for ColdFusion within that market. The very fact that we continue to be able to sell ColdFusion speaks to that.
DZone: What's new in ColdFusion 9 that would be of interest to the existing ColdFusion developer base?
Terry: Well, we have a number of features in ColdFusion 9. I think that's a really good drive our existing community into the product. So, one, we've added a whole number of enhancements to the language, specifically in response to a lot of the requests we've gotten from our ColdFusion community.
So, things like making CFScript, which is one way of writing code in ColdFusion, making it a first level participant. So, basically, anything you can do in the tech based part of ColdFusion, now you can do in the script-based part of ColdFusion. That's one thing we've added.
We've added integration with a product called Hibernate, which will probably be familiar to a lot of these audience, but basically Hibernate ORM part of the language. So now you can write your ColdFusion components, have them tie directly to the database without having to write any SQL code. We've added integration with Office, Word, Excel, PowerPoint. We've added integration with SharePoint. We've added features around making ColdFusion and Flex, Adobe Flex work better together.
So, all of those, I think, add up to things that have really, really gone outside our existing community. And, finally, and I can't believe I'm leaving this out, but obviously we're really seeing an IDE for ColdFusion as well, which is something that the community has been very fierce in saying that we need and we should provide. So, with this version, we're finally getting around to it and really seeing, what I think, is a really compelling IDE for ColdFusion.
DZone: What features does the stand-alone IDE offer above and beyond the CFEclipse plug-in?
Terry: Sure, well the first part, we've rolled in a whole number of tools that we've been able to use in Eclipse without having a dedicated IDE, so things like log viewers and RDS tools, for looking at the database, and the ColdFusion debugger. So that's all been wrapped into the same product and integrated.
But then on top of that, we're supporting a whole number of features that are also in CFEclipse, things like snippets and code assists, so knowing that when I type CFML and I hit space, the next thing should be To: or From: subject, giving me that dropdown list. But then we go a little bit further and go into code insight. So, knowing that you've created a structure and that structure is named a Person.FirstName, Person.LastName, Person.Email, knowing further on my code when I go in to type person. it's going to give me a list of what's going on. So not just knowing what's going on with the language, knowing what's going on with your code.
And then the final feature--oh in addition to that, we also have we support remote projects, which is something that CFEclipse notoriously does not do. Basically, you can set up your projects via FTP or SFTP and we'll support that remote project workflow.
But I guess finally what I think when I talk about ColdFusion builder, and I'm going to get really excited about it, the feature that really excites me is the fact that it's extensible through CFML. So if you want to extend other Eclipse IDEs, you have to learn Java, make sure you know Java, and then you have to learn Eclipse on top of that because it's its own beast. So we wanted to go a different way.
So what we've done is we've taken the IDE, we've written some hooks into it so that basically with a little bit of XML you can wire up ColdFusion code to run based on what you do in the IDE. So you can, say, right-click on a file, tell it how to send a command to your ColdFusion server and run CFML.
So there's a lot of examples that we've come up with for this, but they've mostly been code generation, so generating code for frameworks, generating code for ORM, making sure all that runs out of the box. But I think the community, our community of testers, has actually gone about and done some really, really cool non-intuitive uses of the extension.
So, for example, there's a tool called varScoper, which goes through and it scans all your ColdFusion code and sees whether or not you've varScoped all of your variables properly and components, because this is kind of a big problem that developers have had up until now. So it's a web-based application, so what you do is you have to go to the URL, you have to drop in the path to your CFCs, it will go through and look at them and tell you who's done them properly.
So what Ray Camden has done is taken that bit of code and wired it up to a bolt extension, so now instead of having to go to the web application, I can just right-click it in my IDE, run varScoper on the code directly, and boom, it gives me a report of whether or not this stuff is properly varScoped.
So what's kind of cool about this is that this is a Java based IDE, Eclipse, called in ColdFusion code, which under the covers in varScoper is actually running Java code. So I've extended it with not just ColdFusion but with Java, very, very easily and very, very quickly. So that, I think, is the real special sauce of ColdFusion builder is that our developers will be able to extend it with the tools that they already have at their disposal.
DZone: There has been some discussion around a potential caching implementation in ColdFusion. Is this something that the current release, or possibly future releases, will support?
Terry: ColdFusion 9 does have an advanced set of caching tools far above what we've had in previous versions of ColdFusion. It's based on EHCache, so all of the attending things to come along with that we'll be able to wire up in the background. But yes, it will be able to do things like cache just particular fragments of a page, you'll be able to take those fragments, give them IDEs so that further on you can work with them programmatically so you can retrieve them again just by the IDE, you can expire them via the IDE. So we have a lot of control now over the caching where you didn't have that in previous versions of ColdFusion.
DZone: ColdFusion 9 has tooling around building Ajax driven applications, and obviously there's been a big push around Adobe Flex, a sister product. When should I use Flex versus ColdFusion? And how do I integrate the two?
I think developers are just going to have to find that line for themselves. Obviously, the more comfortable you are with Flex, the closer that line is to the tech side, and the more comfortable you are with Ajax and HTML, the closer it's going to be on the Flex side. But it all comes down to we as ColdFusion as a backend are going to support both of those options, because both of those options are thriving and innovating and doing new and incredible things, so we want to make sure that regardless of which path you choose, ColdFusion is the backend for that.
We are essentially supporting both halves and we don't see any friction there, because there are different solutions for different people, and we want to make sure that we're accommodating both sides of the house.
DZone: There's been some talk about potentially supporting server side ActionScript and ECMAScript. What plans are there for supporting these in ColdFusion?
Terry: Server side ActionScript is a feature that we've been bandying about for a while. Long story short, we finally showed off something like a sneak peek of it last year at Adobe Max 2008. That was just a sneak peek. That's something that we're still sort of talking about and figuring how we're going to do.
So as of ColdFusion 9, we're not supporting server side ActionScript. Is that something we're going to do? We're still not sure yet. Is it something that we're talking about? We definitely are.
I think one of the challenges and one of the issues that's come up - I think there have been a couple of things. One, part of the call for server side ActionScript was coming from people who were frustrated with the fact that in ColdFusion there were still a lot of things that you had to drop into tag-based syntax in order to accomplish.
In ColdFusion 9, and in supporting CFScript fully, it begs the question of whether or not that's going to solve this need for a lot of people. They're asking for server side ActionScript, but in fact they just want a scripting solution that's less verbose than CFML when you're doing business logic. That's one part of it.
The other part of it is, is that ColdFusion as it is, is a dynamic language and ActionScript is a static language. So when you're talking about variable, you can switch variable back and forth, you can do duck typing in ColdFusion. You can do a lot with the fact that ColdFusion is a dynamic language.
Is that something we want to give up and lose? Is that something we want to give the option of doing as statically typed? That's a kind of big issue. And I think what we're going to do is we're going to see the reaction to CFScript in ColdFusion 9, see if it is really accommodating people, and see if that's enough.
I think that's where this is going to come from. I think we'll see how people react to it, and we'll see if ActionScript on the server side is still something that's needed, and go from there.
DZone: So at the moment, in terms of what people are learning in college, computer science students, there's obviously a focus on Java, .NET, and the LAMP stack. Hw are you addressing the need for ColdFusion/CFML courses in current college programs? Is the free licensing structure for educational institutions and attempt to address that?
Terry: It certainly is an attempt to address that. We want to reduce the barriers to people who want to teach ColdFusion in higher education, or just education in general. And it's definitely something that community members have come to us and said, "Hey, we'd like to teach it at community college, help us out here." So offering it free to educational institutions is definitely something that we've tried to do.
But I thing the bigger push is going to be trying to get to institutions that are teaching the LAMP stack and see if perhaps we can offer another option to them. Because I think on a certain level, full computer science courses and programs are never going to be interested in a language that makes it really, really easy to program.
From their perspective they're trying to challenge minds and push them forward. That part where you start getting into actually being productive is not really good for training a Comp. Sci. mind. You want sometime to have to think about malloc and have to think about what's going on. The effects of knowing what's going on Java makes you a better ColdFusion programmer, because ColdFusion is Java under the covers.
So knowing things like strings are immutable, so when you're doing long string parsing in ColdFusion, you're basically rewriting multiple strings, because strings are immutable. So knowing that sort of thing is good. You kind of don't want to start people off with a productive language. You want to start people off with a language where they have to do everything by hand, so you learn why it's great in other languages that things are made productive.
So I think we're going to have to target the right institutions in terms of ColdFusion. But that is one of our challenges. It's not something from a Comp. Sci. point of view that I would even want professors teaching.
DZone: What's new in ColdFusion 9 beta that should make developers using other toolkits take note?
Terry: First off, there's the fact that we integrate with whole numbers of technologies in this latest release of ColdFusion. One we've already supported, as I've talked about before, is dropping down Java in your syntax, dropping into .NET. You can pull in .NET assemblies into ColdFusion and treat them like objects within the language.
There's the fact you can talk to all these different systems: Exchange, LDAP, any database flavor you want. Then also going forward with the release of ColdFusion 9, things like Java portals, SharePoint installations, not just Microsoft, but basically Office documents, and things like Word and PowerPoint. Things like Excel, but also Open Office implementations of those.
So you can talk to all these things, and that's great. It's great that it's there and everything, but a lot of languages can talk to these things. But the sheer productivity in talking to these things I something worth noting. Getting information out of an Excel spreadsheet, it's literally one line of code. Writing a Java portlet, it's going to be a little bit more code, but it's still going to be much less than to do the equivalent code in Java.
ColdFusion is all about making things that are difficult and verbose easy and light. And we're continuing that with ColdFusion 9. I think that's really what I would hope would attract people from other languages. The fact that, one, if you're doing something rote that you're doing constantly, like pulling things out of Excel spreadsheets, you could deploy libraries in Java or you could use ColdFusion. ColdFusion makes it one line of code.
Now what's also good is that, in addition to that one line of code option, which is just straight read it in, you can go a little bit deeper. You can add a little bit more requests to it and you can do more things. Granted it will be more lines of code. But if you're just doing something rote, something like pulling it in and grabbing the information, it's really easy and really compact for you.
So you're going to see productivity improvements for you, because less lines of code is less lines to maintain. Less lines that might contain bugs. So that's where I see the value added for ColdFusion to other languages, is that not just do we allow a lot of communication, but we make it easy and simple and concise.
DZone: Where can folks go to get the beta release?
Terry: The beta release of both ColdFusion 9 and ColdFusion Builder should be available at labs.adobe.com. There should be a pretty big landing page marker for that when you get there. Additionally, if you want to find out more information, Adobe uses this "go URL" system. So if you go to adobe.com/go/centaur, which is the code name for ColdFusion 9. So if you go to adobe.com/go/centaur or adobe.com/go/bolt, which is the code name for the ColdFusion Builder, both of them will be changed when we get there to go to the specific labs landing page for those products. There's a lot of different options on getting to it.
DZone: Terry, on behalf of the DZone community, I'd like to thank you for taking the time to chat with us today.
Terry: Thank you very much.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)