ColdFusion now supports Java 12, which is already EOL. Should you use it? Java 13? 11?
Even though Adobe just added support for Java 12 to CF2018 and CF2016, I will propose you should not use that, but instead should use the latest version of Java 11. Read on for more.
You may have noticed that the Sept 2019 update to CF 2016 and 2018 added support for Java 12 (aka JDK 12, JVM 12, JRE 12). But if you go looking for that at Oracle’s site for downloading Java 12, you will find it’s marked as having reached “reached end of support”, aka EOL or “end of life”. Indeed, now Java 13 is out. So what are we to do?
CF doesn’t support Java 13 currently. Should you try it? (No, not for now.) What Java versions ARE supported by CF (and still updated by Oracle), and where can you find the Java versions CF does support?
This can be so frustrating for folks. The confusion is understandable, and I think I can offer an authoritative answer/explanation.
Current Java versions and CF’s current support of them (at this writing)
First, let’s talk about the current Java versions and CF’s current support of them, at least as of this writing (Oct 2019). You could be excused for thinking you are “stuck”, if “the latest Java that CF supports is end of life”. But that’s not the case!
As for Java 13 and 12, these are what Oracle regards as temporary (“short-term support”, or STS) releases, as were Java 9 and 10. Java 11 instead is termed a long-term support (LTS) release, as was Java 8 (and still is). Both Java 8 and 11 are still updated by Oracle.
Here’s where things stand now:
- CF2018 initially supported Java 10 (when CF2018 originally came out), then it added support for Java 11 (as of update CF2018 update 2), then for Java 12 (as of CF2018 update 5)
- CF2016 supported Java 8 (as CF2016 came out originally), and added support for Java 11 (as of CF2016 update 8), then support for 12 (as of update CF2016 update 12).
So bottom line, most folks on the latest versions of CF 2018 (from update 2, forward) should for now just use the latest update of Java 11 (11.0.5, at this writing). And folks on CF2016 can either stay on Java 8 (the latest version is 1.8.0_231, at this writing), or if they are beyond update 8, they can move to Java 11 (and its latest version).
I’ll note that I discussed some of this before, and offered a table of what JVM versions were supported by what CF versions, in a post I did back in April when a new JVM update was released. I also offer there links to still other resources that I and others have offered on updating CF’s Java version. It can be a 2-minute job if done right, or it can be a nightmare if you make even a simple mistake. I point there to yet another post I did with more on recovering from (or avoiding) such problems.
Why would Adobe be offering Java 12 support now, when it’s gone EOL?
Fair question. Adobe is offering support of the intermediate/STS Java releases (like 9, 10, 12, etc.) along the way so that those who may WANT to use them specifically for some reason can. But I am arguing here that for most folks, it’s not worth bothering.
Note that these STS version have such short lives (literally months) so that by the time they do come out and Adobe gets them supported (and releases a CF update for them), they will generally be or soon be ended by Oracle, as happened with this Java 12 support from last month.
Again, the confusion about all this is understandable, but really the problem is more one that Oracle has created, rather than Adobe.
Finding the Java versions that CF supports
Finally, as for where to “get Java 12” if one really wanted it, you can always find downloads of the Java versions that Adobe DOES support at the bottom of the CF downloads page (a page which is NOT for downloading CF itself, but things RELATED to CF). Just be careful to note again that simply because you are “on CF2018” doesn’t mean you can even use Java 11 (let alone 12). You need to be at or beyond the update that added support for it.
Hope that’s helpful.