I've been reading more and more posts lately asking which version of the JVM should I use with ColdFusion x.xx?  This can be a big question, but it does get narrowed down a bit by the version of ColdFusion you are running and the known bugs in the JVM versions.

ColdFusion 7.xx

Lets start with ColdFusion 7.xx.  For years Macromedia and Adobe claimed that if you used anything other than the officially supported versions of the JVM you would not receive any support.  The problem is that the officially supported versions list never kept up with the updates from Sun.  This was a problem since Sun fixed many nasty bugs and performance issues, but Adobe still only  recognized the same old and buggy JVM versions.  So which version do I use?  When running version 7 of ColdFusion I won't use anything less than 1.4.2_13.  Anything before that, in my opinion and experience, is too buggy and unstable for high load applications.  The 'newest' version is 1.4.2_19 and unless there is a security update or something else very major, Sun won't be updating the 1.4 line any more. End of life was declared last October 30, 2008.  The last version I remember using was 1.4.2_17.


While ColdFusion 7 is a great product and still works wonderful for many people, the fact that the underling server is no longer supported by Sun is enough of a concern to make me want to upgrade to ColdFusion 8.  Especially in mission critical enterprise applications.

java.sun.com/j2se/1.4.2/download.html version 1.4

ColdFusion 8.xx

This brings us to ColdFusion 8 with shipped with the JVM 1.6.0_4 version.  The masses screamed when this happened.  However, there were two very distinctly different screams.  One of excitement and one of horror.  The excitement was due to the great performance boosts is most every aspect of the JVM.  Most any ColdFusion application would gain a massive performance boost just by move the CF8 on the exact same hardware.  Now I said most, unless your application used a CFC heavy framework. This is where the horror came into play.  With 1.6.0_0 to 1.6.0_9 there was a 'class loader bug' which essentially meant it took the JVM a  v  e  r  y    l  o  n  g    t  i  m  e   to load each CFC.  This forced many people to actually downgrade their JVM to the 1.5 series.  Adobe was actually being criticized for being too far ahead of the curve this time.  Read more about the class loader bug at Sun here and here.

Sun to the rescue!  It took well over a year, but Sun introduced a 'few' fixes (more like a major re-write) to the 1.6.0_x line and the 1.6.0_10 version erased any hint of the class loader bug.  Currently the company I work at is running all 6 of our ColdFusion 8 Enterprise servers with JVM 1.6.0_10.  Not to boast (since we're not the biggest CF site out there), but we are currently handing on average 2.5 million ColdFusion page views per day and I've seen higher days over 2.9 million.  Like I said not the biggest, but not anywhere near the smallest (which may be this blog itself).  Anyways, our application runs extremely fast now under heavy peek time traffic and stability speaks for itself.  Since upgrading to 1.6.0.10 our servers have not had to restart ColdFusion once due to JVM stability or performance issues.  We did have a few restarts due to coding issues and not having a large enough JVM heap. DOH! Those issues have since been resolved. We needed to re-tune our JVM for our increased traffic and we had to upgrade hardware to make those changes.

At this point I feel really good about saying JVM 1.6.0_10 or later is the best bet with ColdFusion 8 and high load applications and frameworks.

java.sun.com/javase/downloads/index.jsp version 1.6.

Hopefully you now have enough information to help you decide which JVM s right for your ColdFusion server.