A Java/Ruby Developer Appreciates ColdFusion?

by

When I moved my family 2,500 miles to join Dave Ramsey’s web team two years ago, I joined because of my passion to help Dave reach more financially distressed people through technology. I didn’t join because his web site used ColdFusion. With more than 15 years of development experience, primarily as a Java, ActionScript, and Ruby developer, I had a relatively low opinion of ColdFusion.

However, as a member of Dave’s web team and the ColdFusion developer community, I’ve seen the truly world-class work that is being done with ColdFusion. I’ve come to appreciate ColdFusion as a worthy peer of other modern development platforms.

What changed my mind? Here are some of the contributing factors:

  • Results. As a very practical person, I observed our very successful website. It serves more than 1M unique visitors, with over 10M page views per month. A company of nearly 300 team members generates a large amount of its income from our site. As a Java developer with my nose in the air, I had never worked on a site that had even close to this much of an impact.
  • Java. ColdFusion applications compile down to Java and run as a standard Java web-app, deployable as a .war file on any Java app server. All of the scalability, flexibility, and power I was used to in my Java web-app development is available in a well-executed ColdFusion app.
  • Mach-II. We have been a Mach-II shop for several years, but we recently rebuilt our primary web site, daveramsey.com, into a 50 module Mach-II 1.8 application. We’ve found Mach-II to be an extremely powerful Model-View-Controller framework that enables us to support our growing number of users. It provides a foundation we can build on that has helped us to roll out new features quickly, without compromising a strong MVC design. (I also had the honor of meeting team Mach-II at BFusion, and found Peter, Kurt, and Matt to be an outstanding group of committed, brilliant developers. We reviewed their work on Mach-II 1.8 while we were developing our new website, and found their code to be among the best ColdFusion code around. They set the bar for outstanding quality and community support.)
  • Libraries. ColdFusion 9 added Hibernate, providing access to the same proven ORM used by leading Java and Groovy apps. The ColdSpring framework provides IoC support on par with Spring. Several automated testing libraries are available; we use MxUnit. RiaForge has 700+ additional open source ColdFusion projects. And, since ColdFusion is Java, thousands more Java libraries are available. We used the Java Topology Suite for a large internal Flex/CF/Java Map mashup application.
  • Productivity. ColdFusion is a dynamic language that runs on a JVM, offering productivity improvements over traditional Java development. From simple things like cffile, cfhttp, cfquery, and cfdump (!), to integration with the frameworks I mentioned above, I’ve found ColdFusion development to be more agile than Struts or Spring MVC.
  • Competition. I’m a huge fan of the Railo and Open BlueDragon efforts, because they provide very healthy competition to Adobe and encourage innovation. They also open CFML up to the open source community, so that developers can deploy ColdFusion applications on a completely open stack. We don’t use them here yet, but may in the future.

ColdFusion isn’t perfect — any experienced developer knows that there is no such thing. Every technology has pluses and minuses. However: real, enterprise-class, powerful, and successful applications are being built on ColdFusion. If you are like I was a couple years ago, and have a low opinion of ColdFusion based on poorly written apps or experience years ago, I’d encourage you to take a second look. You may be pleasantly surprised by what you find.

Tags: , ,

9 Responses to “A Java/Ruby Developer Appreciates ColdFusion?”

  1. jonwolski Says:

    You beat me to the punch on this post! I came to ColdFusion with reluctance and a negative prejudice. After working in CFML for a few years, I too have come to appreciate it.

    It’s funny how people like me could deride it as simplistic and then express a preference for some other dynamic language and framework on J2EE (grails, rhino, jsp). As a view-tier language on top of enterprise Java, it’s on par with (if not superior to) anything else I’ve seen.

  2. David Says:

    Wow. Very nicely said. As a long time ColdFusion developer (with a lot of development experience outside of CF) I’ve made the same points regarding CF to other IT professionals with backgrounds similar to yours, and have been met with utter disbelief.

    Like you (I suspect) at this stage in my career, I’m more interested in getting solutions implemented in an agile and sustainable manner, and I find CF perfect to that end.

    Cheers

    David

  3. Brian Rinaldi Says:

    Great post. As a long-time CF developer and community member working on Enterprise-level apps (often in Mach-II as well), I thank you. Its no small feat to overcome those prejudices against languages…many people simply cannot despite actual evidence that debunks their prejudice. Nonetheless, I have noticed things like ORM integration and ColdSpring have made the case much stronger.

    Keep up the good work!

  4. Sean Corfield Says:

    Always good to hear a positive story born out of initial negative feelings. I first encountered CFML when my team of Java and C++ developers were presented with it as the preferred-by-management technology for rebuilding a high-profile e-commerce system, previously powered by BroadVision (in C++). My team was pretty snooty about CFML at first – just like you – but after we’d worked with it for a while we really grew to like the rapid development it afforded us.

    Like all technologies, there are imperfections and it’s possible to write poorly structured, poorly performing code in any language.

    Over the last few years I’ve found myself mixing various JVM-based languages on the back end but not much beats CFML for the View-Controller portion – and with Hibernate integration (in CF9 and in progress for Railo), CFML is becoming hard to beat for back end work too.

    CFML has evolved into a really good scripting / markup language for the JVM.

  5. dugsmith Says:

    @David, @Brian, and @Sean: Thank you for adding your confirmations to this discussion (and for your years of investing into the CFML community). In a world where perception often becomes reality, it is important for those of us with real-world experience to help others see what might be obscured by prejudice.

  6. Aaron West Says:

    Nashville represent!! Thanks for posting this entry Doug. It’s great to hear about your experience coming to ColdFusion from other technologies.

  7. Conust Says:

    sounds interesting, but no more than that

  8. Devalnor Says:

    If not already done I suggest you to look cfwheels framework. 😉

  9. Calvin Hill Says:

    Having done JSP and JSF development for several years, I always was watching CF from afar. At one point, I had the opportunity to actually look into it and maybe bring it on our development. But, alas, our management went weird and I left before I could really get my hands dirty. Now, I have the same opportunity and really enjoy the changes that have been made with CF 9. But instead of the development calling the shots, the client is going to tell us what we should develop on. So, here was wishing for CF and saying bye to JSF/Java/Groovy world and hello to .Net.

    No worries, I really enjoyed your article and look forward to reading more of your posts.

Leave a comment