Wondering about CF support for Java 9, 10, or 11, 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.
(And while I am writing this in mid-2018, I will come back and update the links and info about CF2018, as it's released, and the JVM versions, as things change over time.)
Why we need to know this stuff, and why it's a bit more challenging recently
If you're using ColdFusion (and especially if you admin it), you may be aware of how Adobe has a process to formally support a given new Java (JVM, JDK, or JRE) version before you can/should move to it.
And while normally there have been *years* between Java releases, suddenly Oracle has gone to a process where Java 9 and 10 have come out within the past few to several months, and will each be updated for only 6 *months*, before Java 11 comes out in Sep 2018 (and is then due to "live"/be updated until 2023). After Sep 2018, both Java 9 AND 10 will be considered obsolete (no longer publicly updated by Oracle), just like Java 7 is already.
And yet Java 8 (which existed before this change by Oracle) WILL continue to be publicly supported and updated by Oracle until Jan 2019! Confused? It's understandable. I hope to clarify some things.
And most important: what does all this mean for ColdFusion (ColdFusion 2016 or below, or the new ColdFusion 2018 now in beta), if you are wanting to run Java 9, 10, or 11? Well, that's what I address below. (And for some readers, the info above about the timing of Java 9 and 10 may be enough of an easter egg to help them better understand the situation we and Adobe are in.)
Finally, before moving on, I offer a table at the conclusion to try to summarize the support of various Java versions in various CF versions, but don't just skip there, if you want to understand the why's and when's and wherefor's.
First, what does the ColdFusion 2018 beta support?
This all started (as many of my blog posts do) as a simple reply to an Adobe forum post from someone experiencing a bug when they tried to update the CF2018 Beta (with its update 1) to use Java 10.
I explained to him first how that was simply not listed as being supported. This was at the time of the first public beta, which supported only Java 8 or 9. And I pointed him to the support matrix document for the beta, as is linked to from that page above, which clarifies that. (If you try to find that info in that PDF, look for "jdk"--not "java" or "jvm" or "jre", to see the indication of that. Grr.)
Update: The second CF2018 public beta does come on Java 10?
The natural next question (when I first posted this, during that first public beta) was "why is Adobe not yet supporting Java 10 in CF 2018?"
The good news is that the second CF2018 beta does come with Java 10. The docs don't currently indicate it, but I confirmed it upon installation, where it's running Java 10.0.1.
As for what I'd written before, it explains a bit the delay, and so I will leave here what I wrote, but in this blockquote:
The timing of things about Java 9 and 10 does explain it the delay.
So first, yes, the CF team is well aware that Java 10 is now out (and that 11 is coming). Before we deride them for not supporting that in CF 2018, or Java 9 in CF 2016 or CF 11, we need to consider the situation that I mentioned above: Java 9 and 10 both have had only VERY short lives.
Java 9 was released Sep 2017 and public updates ended in March 2018, while Java 10 then came out in March 2018 and public support/updates for it will end in Sep 2018! That's only 6 months each between release and end of public updates, as detailed at the Oracle Java SE Support Roadmap.) Holy smokes!
And the Adobe engineers had already started working on (and indeed building/releasing) the private and then public (beta) prerelease of CF2018 well before Java 10 came out 2 months ago, so they chose to update it to support Java 9 in getting the beta out the door last month. Changing since then to provide formal support for Java 10 is not trivial. (Consider the very bug reported by the gent above on the Adobe forum in trying to force it, let alone all the testing on all platforms they must do.)
So that's why they DID implement Java 9 support in CF2018.
[Update:] And I learned after making this blog post that they DO plan to support Java 10 in CF2018. Adobe engineer Suresh Jayaraman responded to the forum post above, saying:
===================== 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
(Sadly, I can't seem to find a way to provide a direct link to the specific comment, neither via a feature in the blog UI or as any sort of anchor in the underlying html. Also, FWIW, the problem raised by the poster of the forum entry turned out not about Java 10 after all, because again, as Suresh notes, CF2018 was even certified with Java 10, though it CAME with Java 9 initially.)
And what about Java 9 or 10 support in CF2016 or 11? When is that planned?
As for getting Java 9 or 10 support into CF2016 or CF11, I suspect it may come.
But I can understand that since Java 9 came up RIGHT while they were in the middle of getting the CF2018 (private and then) public prerelease out the door, they couldn't give the attention needed to get Java 9 or 10 running on CF2016 or 11.
So when will the support Java 9 or 10 on CF 2016 or CF 11 (which is still supported into 2019)? I don't know (and to be clear, I am not on the Adobe team and currently have no more insight into the timing of the release of CF 2018 or support of specific Java versions than others.)
I wouldn't be surprised if they opted to just wait to Java 11, due in September. Or they may well come out with a CF11/2016 update that supports Java 10, since it did come out in March 2018 and will live to Sep 2018. I won't be surprised if they opt to skip Java 9 for them, since Oracle's public support for it has already stopped.
But you can see what a pickle they are in, with these very short Java releases.
What about Java 11?
As for when Java 11 then comes out in Sep 2018, I think it's safe to say that it still won't be supported right away (by either CF 2018, CF 2016, or if at all in CF 11).
As many readers will know, Adobe typically provides a CF update that adds formal support for a new major Java version a few to several months after it is released, which could mean 2019 (yes, ugh), for all 3 then-current CF editions. (And CF11 support will end in 2019, per the Adobe product support matrix.)
I don't like that delay between Java releases and CF updates supporting them, either. And yes, Adobe are aware they could obtain pre-release versions at Java Early Access Downloads. My sense, from having observed things, is that they don't seem to feel they can adequately start working with that in advance as far as folks would wish, so that the time between final Java release and initial CF support would be shorter.
If there's any good news in all this about Java 11, it's that since Java 11 is due to be an LTS ("long term support") release by Oracle, (per that Oracle Java Support Roadmap above) and so it's slated to have public updates until 2023! That should even suffice to get us even well into CF2020 or whatever it may be called.
What about Java 8, or 7 or 6?
Before closing, some future readers may find this blog post when trying to find info about CF support of another older Java (or jdk, jre, or jvm) version. This has been addressed by Adobe in various two posts in 2014:
- About Java 8, CF 2016 supports it out of the box (as does CF 2018). For a discussion of CF 10 and CF 11 support (and what CF update you must be on for Java 8 to be supported, or what installer of CF11 included it), see this Adobe blog post
- As for Java 7 or 6, for a discussion of support its support in CF 9, 10, or 11, see this Adobe blog post.
Speaking of Java 8, if you are on CF 9 or earlier and needing to update to Java 8 or above (such as for TLS support), which CF9 and earlier did not support, just know that while running CF 9 and earlier never FORMALLY supported Java 8, many have gone ahead and updated the JVM (see more on doing that, below), and it's worked ok.
Again, Adobe doesn't even SUPPORT CF 10 or earlier anymore, so whether CF 9 or earlier "formally support" Java 8 doesn't matter so much as, "does updating it solve a problem for you and not cause one?". In this case, you're on your own to try (but I can help you, whether to implement the JVM change or if you run into trouble after the fact.)
Conclusion on CF support of Java 9, 10, and 11 in mid-2018
In conclusion, as for all this about Java 9 and 10, let's just consider it a rough patch, caused as much by Oracle's odd choice to make these have only 6-month long lives. Adobe (and any vendor who bundles or requires support of Java) is kind of stuck, and we will suffer a bit because of it. But this, too, shall pass.
As for Java 11, I suspect we will soon settle into it being supported on ColdFusion 2018 and ColdFusion 2016 (perhaps even ColdFusion 11) within some months of it release, and we'll then be back to a more settled state for a while.
Table of CF vs Java VersionsIf it helps, here is my crack at a table of what versions of CF support what versions of Java, at this writing. This is based on either the CF Support Matrix documents for each CF version, or Adobe blog posts I have found. (Again, I will try to keep this post updated as time passes and things change. And I'm of course open to correcting any mistakes I have made.)
Note I have marked as "Y" where it supported it at the release of that CF edition. I mark it as "N" where either it's stated it won't be supported or it's not likely ever to be (in my opinion). I have marked "Not yet" where I think it's likely or could come. I have marked "conditionally" where it depends on an update or particular installer (sometimes the initial installer for a release did not support a given JVM, but a later "refreshed" one DID, in addition to later updates adding such later JVM support).
|CF Version||Java 11||Java 10||Java 9||Java 8||Java 7||Java 6|
|CF2016||Not yet||Not yet||Not yet||Y||N||N|
|CF11||Not yet||Not yet||Not yet||Conditionally||Y||N|
Note that Adobe has said in their blog posts above and elsewhere that you are always free to run any MINOR java version of a MAJOR version they support. So for instance, with CF2016, you can be on any version of Java 8 (including Java 8 updates that are still coming out in the future), because CF2016 supports ANY minor version of Java 8. But again (for now) you can NOT go UP to Java 9 or above, at least not as formally supported (nor are earlier Java versions formally supported on CF2016).
Oh, and I'll add that if you are ever interested in updating the JVM that CF uses, that can be a simple process, but covered with thorns which could leave you thinking CF is dead. More good news: I have a blog post to help you, best read before you suffer but written to help when you're in panic mode: CF911: 'Help! I've updated the JVM which ColdFusion uses, and now it won't start!'.
Hope all that helps. Comments welcome.
For more content like this:
- If you may prefer direct help, rather than digging around here/elsewhere or via comments, I can help via my consulting services
- See that for more on how I can help a) over the web, safely and securely, b) usually very quickly, c) teaching you as we go, and d) with satisfaction guaranteed