I spent a considerable amount of time today in two different e-mail threads, both from individuals trying to compare ColdFusion development to .NET development. So that I won’t have to wade through all of this again any time soon, and in the hope that this discussion proves useful to others, I have extracted the core messages from both threads, and compiled them into this post.
Before going into specifics, there is a more fundamental issue that must be laid to rest. You have been asked to compare ColdFusion to .NET so as to determine the path for future application development. And frankly, what you have been asked to do does not make a whole lot of sense, and demonstrates a remarkable lack of understanding as to what exactly ColdFusion is and what .NET is not.
.NET is a platform and framework on which to build applications, and not just web based applications. .NET is the underlying engine which powers all sorts of applications (server apps, client apps, web apps, and more), and applications written for .NET leverage the .NET APIs to deliver needed functionality.
If you want to build .NET powered web applications, then you will likely do so using ASP.NET. ASP.NET (which is similar to classic ASP only in name) applications can be written in many languages, but VB.NET and C# tend to be the most popular. ASP.NET applications are collections of pages and controls that, together, create a complete application. And ASP.NET tends to be used to build the presentation tier of web applications (although that is not always the case).
ASP.NET applications are compiled and executed by a virtual machine, and at execution time the original language used to write the code becomes irrelevant. The application just runs, leveraging the framework within which it is running.
Of course, you can’t do much with ASP.NET without knowing something about the underlying .NET world. But exactly how much of the guts you’d need to be aware of depends on what it is you are building and how you’d want to go about building it. Obviously, the more an ASP.NET developer knows about .NET and all it is capable of, the more he’ll be able to leverage the power afforded by that platform. But that does not in any way suggest that simpler applications cannot be built without paying much attention to the .NET framework itself. (And indeed, Visual Studio .NET hides much of the underlying complexity from those who’d rather not pay attention to it).
So, .NET provides the framework and architecture, and ASP.NET is used to build web applications that take advantage of that underlying framework and architecture.
Now let’s look at J2EE (or Java EE), an alternate and competing platform, created by Sun and supported by a whole slew of vendors and products. J2EE is a platform and framework on which to build applications, and not just web based applications. J2EE is the underlying engine which powers all sorts of applications (server apps, client apps, web apps, and more), and applications written for J2EE leverage the Java APIs to deliver needed functionality.
If you want to build Java powered web applications, then you have a few choices. You might use JSP which provides a page based scripting interface to Java based web applications. Or you may use ColdFusion which runs on top of Java. Both JSP and ColdFusion tend to be used to build the presentation tier of web applications (although that is not always the case).
ColdFusion (and JSP) applications are compiled and executed by a virtual machine, and at execution time the original language used to write the code becomes irrelevant. The application just runs, leveraging the framework within which it is running.
Of course, you can’t do much with JSP without knowing quite a bit about Java. By contrast, you can do quite a lot with ColdFusion without knowing anything at all about Java, but you can do much more armed with Java know-how. The extent of Java exposure required depends on what it is you are building and how you’d want to go about building it. Obviously, the more a ColdFusion (or JSP) developer knows about Java and all it is capable of, the more he’ll be able to leverage the power afforded by that platform. But that does not in any way suggest that simpler applications cannot be built without paying much attention to the Java itself.
So, Java provides the framework and architecture, and ColdFusion can be used to build web applications that take advantage of that underlying framework and architecture.
Do you see a pattern here? Comparing ColdFusion to .NET is a bit like comparing one vendor’s finished car to another vendor’s engine. It’s just not apples-to-apples.
If you want to compare ColdFusion to .NET you have two avenues you can follow. You can perform a top-down comparison, first comparing the platforms (J2EE and .NET), and then comparing the web application development experience using ColdFusion on top of J2EE to that of using ASP.NET (on top of .NET). Or you can perform a bottom-up comparison, first looking at the development experience of ColdFusion and ASP.NET, and then comparing underlying architecture and platforms.
But either way, you need to separate the engine discussion from the application development experience discussion. Only then can you make educated recommendations and take defensible positions.
Oh, and for an overview of ColdFusion and how it relates to Java, see this post.
Leave a Reply