On ColdFusion and its support for Java 9, 10, and 11
Note: This blog post is from 2018. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.(This post was written originally in May 2018, 2 months before the release of CF2018 and a few months before the release of Java 11. I have updated it some to reflect changes in that.)
Wondering about CF support for Java 9, 10, 11, or later here in 2018 (with respect to CF 2018, CF 2016, CF 11, or earlier)? Did you know that Java 9 and Java 10 each have only 6-month lives? Seriously. And did you know that Java 9 is already no longer updated, while Java 8 still is (into next year), and that Java 11 is due to come out in September 2018? It can be quite confusing if you've not been paying attention to Oracle's new release model.
What does all this mean for Adobe and CF, and CF users? What versions of CF do, do not, and/or may support these various recent Java versions? The good news is that CF 2018 will come out running (and the second public beta does come running) on Java 10 (no word yet on Java 11). But what about other recent CF versions?
Read on for more.
Update: CF2018 did come out as expected in July 2018, and at first it came out supporting Java 10. Then after Java 11 came out in late 2018, Adobe updated both CF2018 and CF2016 in early 2019 to support Java 11 (or you can continue to use Java 8 while it's supported by Oracle). Adobe also announced in Jan 2019 that they had reached an agreement with Oracle licensing Java 11 and updates to 8 for commercial use with CF. You may want to read my post on the CF portal discussing further when the April 2019 updates for Java 8 and 11 were released by Oracle.
I leave what I wrote below for posterity/historical perspective.
https://coldfusion.a...
This little hiccup in Java versions is rather confusing. I'm wondering is Adobe and other companies are essentially waiting for Java 11 to drop before releasing support for new Java versions. I can envision a scenario that Java 10 might even be skipped. Crazy times.
Wil
Suresh Jayaraman said:
=====================
Regarding the official support for Java 10 for CF 2018 , the current plan is to support it even though we have shipped the installers with Java 9 JRE .. we are contemplating on switching to Java 10 .
BTW , even the Public beta build was certified in Java 10 before release so you are safe to continue to test with Java 10
=====================
And for any who may wonder where Adobe shared that info, it was in a reply to Benjamin in the thread that started the discussion (albeit titled about a specific error he was getting, which turns out not to have been about Java 10 after all):
https://coldfusion.a...
Sadly, I can't seem to find a way to provide a direct link to the specific comment from Adobe, whether via a feature in the UI or the underlying html. But interested folks can search for that quote from Adobe there, if interested.
I hope to get some time later today to fold this observation into my blog post, to save readers having to find it here in the comments. :-)
Before we installed a different Java version in production we would need extensive jdbc testing...
1) First, I have not encountered any instances of an update to the JVM cause a problem with the JDBC drivers in CF. Now, to be clear, I am referring to a supported JVM updated and the built-in JDBC drivers, though I would be surprised also to hear of it even with downloaded JDBC drivers.
Now, I suppose if one jumped from Java 6 to 8, for instance (as was possible in CF11), it could be that a driver in use that worked with Java 6 might not work with Java 8.
But again in this blog post we are not even talking about one upgrading the JVM, per se. We're talking about the state of CF support of those new JVM versions, 9, 10, and 11. To be clear, I was not proposing people move up to them, at least not until Adobe did formally support them.
So while you warn people to beware moving up to "any java release" due to issues with drivers and without "extensive jdbc testing", I would not make such a broad warning, for my reasons just stated.
2) Second, you refer to the help I offered (back in 2016), and thanks for the kind regards. And the implication is that I might recall the trouble you faced about a JVM update and JDBC driver issues. But I must say that from my notes, I don't see that.
I do see first that in March there was an issue where you brought me in for some emergency help and it turned out someone had run an automated JVM update which had removed the old version that CF pointed to (and we fixed that easily).
Then I see in August we did update the JVM (manually), and in doing that (and updating the jetty.lax also to point to that, for the CF Add-on Service, as I discuss in my other blog post), we happened to find there was already an issue with that not starting, which we fixed by my giving you a stock neo-document.xml file.
Neither of those were about JDBC driver issues hurt by the JVM udpdte, at least from my notes. Do you recall differently?
Or could this have been something you experienced on your own, and not something I helped with? I do see also that in Mar 2017 you shared an email about a problem you had with a CF update (not a JVM update), which fortunately you resolved (and reported was a permissions issue).
BTW, if anyone may think this is too much of "airing dirty laundry" on the blog here about Paul's past issues, I am hopeful that Paul will not feel that way. These are issues that happen to people all the time that I help resolve. If anything, it could be helpful for some readers to see such problems can be easily solved.
I do realize his goal is simply to help people who may be contemplating a JVM update. Again, that's not really the point of this post. But since Paul raised these concerns, and referenced past work we had done with troubleshooting, I wanted to share my understanding of things, for his sake and for all who may be reading along. :-)
It's certainly an interesting situation that we face. If I were to guess, I'd think the choices will be:
a) they license the future versions (which they bundle with CF), in which case we can get updates because we're using the Java binary under THEIR licensing of it
b) they stop bundling Java and make US get it ourselves. Other apps do that, like Tomcat. And the good news there is that there is the OpenJDK (from Oracle), and perhaps Adobe will certify CF in the future to support that and its later versions (like they do eventually when new Java versions have come out).
Again, they will need to confirm that. For those interested in a bit more on this topic, you can just google: oracle java licensing 2019 and find PLENTY. But I found a nice, concise yet complete discussion of the matter here:
https://www.azul.com...
Any Adobe folks following along who may be able to help us out here? Especailly with a post to clarify things on your blog?
- Steve
https://coldfusion.a...
For completeness sake, my post discussing Corretto as an option back then is here:
https://www.carehart...
And to be clear, as you say, Adobe never has certified CF for use with it (and seemingly won't), but some have reported it's worked. And I appreciate your regard for it as being optimized for AWS.
Even so, it would seem that those who CAN use the Oracle jvm SHOULD use it, until some distinctive benefit of Corretto is identified. Or do at least be aware that you are operating on an unsupported jvm, so unexpected problems may be more challenging to resolve, and Adobe won't help.