ColdFusion MX is fast approaching its first birthday, and what a first year this has been. A completely brand new ColdFusion, incredible new features and technologies, and even versions that run on J2EE servers on all sorts of platforms (including the oft requested Mac OSX). Which makes this a great time to review the ColdFusion-Java relationship, and what it means for you.
So, What Exactly is Java?
Over the past few years I have regularly started presentations by asking, "What exactly is Java?" We've come a long way in a short time - the blank expressions and assorted answers have been replaced by a spattering of raised hands and assorted answers. We're making progress.
The answers I get (ignoring the jabs, platform jokes, and painful groans) usually fall into one of two categories:
Java is a language.
Java is a platform.
So, which is correct? Actually, both.
Java is indeed a language, an object-oriented strongly typed bytecode portable language. And Java the language has nothing to do with the Internet. Java the language is just that - a programming language. Java the language was designed to be the ultimate programming language - write it once and it will run anywhere, and not just on computers either.
Java, or more accurately J2EE, is also a platform. Java the platform provides the foundations and building blocks for everything from database integration to transactions and guaranteed delivery to mobile computing to legacy system integration to security to directory service integration to... you get the idea.
Java the language and Java the platform are not one and the same. Java the language can be used to write applications that are not J2EE applications. And J2EE can be (or should be) leveraged independent of Java the language.
A Better ColdFusion
ColdFusion MX runs on top of underlying Java.
ColdFusion developers, for the most part, do not care for Java the language. This is quite understandable. ColdFusion is easy, intuitive, rapid, and even fun - all adjectives rarely heard when describing Java.
So what's in it for ColdFusion developers? Lots...
The Java internals provide for a more reliable, more robust, and more scalable ColdFusion - even if those internals are mostly ignored.
The new Java-based engine is faster than the old interpreter.
Java APIs, specifications, and functionality can all be used by ColdFusion developers - without having to know Java.
Java components, objects, and tags can be used by ColdFusion developers - again without having to know Java.
ColdFusion can take advantage of Java internals, for example J2EE sessions - this way ColdFusion can share session state information.
No downside at all - you can use ColdFusion as you always have. And lots of upside too.
A Better Java
ColdFusion MX runs on top of underlying Java and in doing so makes for a better Java.
I asked earlier what Java was, now let's turn that around. What exactly is ColdFusion? Well, ColdFusion is (at least) two things:
ColdFusion, or rather CFML, is a language.
ColdFusion is an application server.
Prior to ColdFusion MX there was no way to separate ColdFusion the language from ColdFusion the application server. But that has changed. You can use ColdFusion as you always did - an application server with a built-in language - or you can use ColdFusion as a scripting language on an application server of your choice.
Why do we use ColdFusion? That's an easy one - remember the adjectives I used earlier? Easy, intuitive, rapid, and even fun. ColdFusion, and in particular CFML, is the fastest and most efficient way to build applications for the Internet and Web.
So what's in it for Java developers? Lots...
The simplicity and effectiveness of the CFML language.
All of the ColdFusion integrated services and functionality.
Java developers can now take advantage of CFML. There are parts of any application that just should not be written in straight Java (the entire presentation layer for starters; you really don't want to manipulate URL and form values using low-level Java code) - CFML is ideal for that. Lots of upside, and no downside whatsoever.
For organizations that have invested fortunes in large J2EE installations, and in doing so have discovered that complexity makes the system unusable for a significant chunk of the organization, ColdFusion truly helps deliver the promise of Java and J2EE.
Conclusion
I've used this column many times to discuss building tiered structured applications, knowing where to use ColdFusion and where not to, leveraging back-end infrastructure, and more. In an ideal world, ColdFusion is the middle tier in a multitier application talking to all sorts of front ends and back ends. For ColdFusion developers, the Java platform provides the heavy lifting needed to power real-world applications. For Java developers, ColdFusion on top of Java helps deliver the promise of Java, making this powerful platform actually usable. ColdFusion and Java are valuable independent of each other, but when combined, are more valuable than the sum of their parts.
About Ben Forta Ben Forta is Adobe's Senior Technical Evangelist. In that capacity he spends a considerable amount of time talking and writing about Adobe products (with an emphasis on ColdFusion and Flex), and providing feedback to help shape the future direction of the products. By the way, if you are not yet a ColdFusion user, you should be. It is an incredible product, and is truly deserving of all the praise it has been receiving. In a prior life he was a ColdFusion customer (he wrote one of the first large high visibility web sites using the product) and was so impressed he ended up working for the company that created it (Allaire). Ben is also the author of books on ColdFusion, SQL, Windows 2000, JSP, WAP, Regular Expressions, and more. Before joining Adobe (well, Allaire actually, and then Macromedia and Allaire merged, and then Adobe bought Macromedia) he helped found a company called Car.com which provides automotive services (buy a car, sell a car, etc) over the Web. Car.com (including Stoneage) is one of the largest automotive web sites out there, was written entirely in ColdFusion, and is now owned by Auto-By-Tel.
Reader Feedback: Page 1 of 1
#6
Edward Rynearson commented on 23 Apr 2003
The Chicago Park District hosts its web site externally. Our online registration process has become very popular and we've begun using Cold Fusion Components and Web Services to integrate the external data with our internal processes. Cold Fusion costs money yes but you can pay for it with a couple days worth of paying programmers. Its really a
#5
John Turner commented on 8 Apr 2003
I'd love to use CF with Java, I've been a CF developer since version 2.0. However, I see no reason to do so when Cold Fusion costs money and there are so many open source technologies and platforms out there that are available for free. I can't imagine paying for WebSphere and then having to pay for CF on top of it just to create some webapps.
#4
Ben Forta commented on 8 Apr 2003
Jackie,
I think you need to spend more time with ColdFusion. I have been living and breathing CF/Java integration for a while now (and am writing this while in a meeting with IBM reps, who by the way love the idea of CF being the presentation layer on top of WebSphere) ...
Java has come a long way, I'll give you that. But there is still no comparison when it comes to simple HTML integration, form processing, and the like. Even using the abstractions you mentioned - you are still writing at a much lower (and more complex) level than you are in CFML.
--- Ben
#3
John commented on 18 Mar 2003
I am new to integrating Java and Cold Fusion. I am also trying to make a case for this marriage at work. We currently use J2EE and we are very much a "java shop". Everyone knows java but me. I only have experience creating Web applications with Cold Fusion. I want to know if we would still have to purchase the Cold Fusion server to run this type of web application? I have Cold Fusion MX Developer edition as part of the Macromedia MX suite. I really don't know what I need to get started developing with the J2EE and CFML combo?
#2
Alex Hubner commented on 17 Mar 2003
Jackie, sorry do disagree with you. Maybe you're a workaholic (or live in a different planet?) saying that Java should be used in the presentation layer instead of CFML... Java CAN be used in the presentation layer? Sure it can, but it's not the fastest, easiest (and all the adjectives that ColdFusion has) way of doing it. That's what Ben is talking about, not that you shouldn't use it... The power of Java and the simplicity and effectiveness of CFML, is simple that. Unfortunately you miss the point and a good oportunity to keep your personal judgements off. Judgments based in a single phrase, part of an entire article...
#1
Jackie Figueroa commented on 13 Mar 2003
I think the author of this article has acted irresponsibly in including the paragraph quoted below. The author of this article appears to not have been exposed to Java in at least five years. Java has come a long away from the days of Servlets imbedded with HTML print lines. JSP,Struts, and Java Server Faces are the technologies that should be used in the presentation layer and the statement made in this article is without merit and wrong.
"Java developers can now take advantage of CFML. There are parts of any application that just should not be written in straight Java (the entire presentation layer for starters; you really don't want to manipulate URL and form values using low-level Java code) - CFML is ideal for that. Lots of upside, and no downside whatsoever. "
Edward Rynearson wrote: The Chicago Park District hosts its web site externally. Our online registration process has become very popular and we've begun using Cold Fusion Components and Web Services to integrate the external data with our internal processes. Cold Fusion costs money yes but you can pay for it with a couple days worth of paying programmers. Its really a
John Turner wrote: I'd love to use CF with Java, I've been a CF developer since version 2.0. However, I see no reason to do so when Cold Fusion costs money and there are so many open source technologies and platforms out there that are available for free. I can't imagine paying for WebSphere and then having to pay for CF on top of it just to create some webapps.
Ben Forta wrote: Jackie,
I think you need to spend more time with ColdFusion. I have been living and breathing CF/Java integration for a while now (and am writing this while in a meeting with IBM reps, who by the way love the idea of CF being the presentation layer on top of WebSphere) ...
Java has come a long way, I'll give you that. But there is still no comparison when it comes to simple HTML integration, form processing, and the like. Even using the abstractions you mentioned - you are still writing at a much lower (and more complex) level than you are in CFML.
--- Ben
John wrote: I am new to integrating Java and Cold Fusion. I am also trying to make a case for this marriage at work. We currently use J2EE and we are very much a "java shop". Everyone knows java but me. I only have experience creating Web applications with Cold Fusion. I want to know if we would still have to purchase the Cold Fusion server to run this type of web application? I have Cold Fusion MX Developer edition as part of the Macromedia MX suite. I really don't know what I need to get started developing with the J2EE and CFML combo?
Alex Hubner wrote: Jackie, sorry do disagree with you. Maybe you're a workaholic (or live in a different planet?) saying that Java should be used in the presentation layer instead of CFML... Java CAN be used in the presentation layer? Sure it can, but it's not the fastest, easiest (and all the adjectives that ColdFusion has) way of doing it. That's what Ben is talking about, not that you shouldn't use it... The power of Java and the simplicity and effectiveness of CFML, is simple that. Unfortunately you miss the point and a good oportunity to keep your personal judgements off. Judgments based in a single phrase, part of an entire article...
Jackie Figueroa wrote: I think the author of this article has acted irresponsibly in including the paragraph quoted below. The author of this article appears to not have been exposed to Java in at least five years. Java has come a long away from the days of Servlets imbedded with HTML print lines. JSP,Struts, and Java Server Faces are the technologies that should be used in the presentation layer and the statement made in this article is without merit and wrong.
"Java developers can now take advantage of CFML. There are parts of any application that just should not be written in straight Java (the entire presentation layer for starters; you really don't want to manipulate URL and form values using low-level Java code) - CFML is ideal for that. Lots of upside, and no downside whatsoever. "