-
Notifications
You must be signed in to change notification settings - Fork 499
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Java 11 Upgrade (no free security fixes for Oracle Java 8 after January 2019) #4259
Comments
[Info from #4217] Java 9: Looks pretty good, I seem to have it mostly running after a few hours today, but we probably don't want to upgrade yet. Details:
|
I'm glad we now have a issue dedicated to Java 9. I like working in small chunks. Thanks @matthew-a-dunlap Here's the comment I left on #4217.
I don't believe it makes sense to upgrade to Java 9 at this time. It's only been out for a few weeks so Linux vendors haven't had time to package it as The next question is, "When will we be able to simply run |
After listening to http://www.javaoffheap.com/2017/11/episode-28-back-from-javaone-with.html the other day I have even less reason to believe we should spend much time trying to upgrade to Java 9. There's some good discussion at the end about how Java 9 is a non-LTS release. In the Java world we are used to every major release being supported for quite a while but the game is changing. Here's a chart from http://www.oracle.com/technetwork/java/eol-135779.html First, note that Java 9 is a non-LTS release. The note how it says, "For releases after Java SE 8, Oracle Java SE product releases not designated as LTS releases will only be maintained until the subsequent release." Forcing our users to upgrade to Java 8 in #2151 was the right thing to do because we were prodding them get on a supported version of Java if they weren't already. We should not force our users to move to a non-LTS version of Java. It's fine for developers to play around with Java 9, of course, but for production use, we should target the next LTS version of Java, which is 18.9 (the numbering has changed to be more like Ubuntu), due out in September 2018 according to the chart above. Of course, as I'm saying this, I'm wondering to myself, "How long will Java 8 be supported?" According to this chart from the same page, Java 8 will continue to get public updates (security patches for the non-paid version) until September 2018: As the chart above indicates, Java 8 will get public updates for a longer time than Java 9 (September 2018 vs. March 2018). To me, this is even more reason not to be in a hurry to switch from Java 8 to Java 9. The date to pay attention to is the one for "End of Public Updates" and to make sure that our community stays on a version of Java that receives security updates. |
I've been listening to http://enterprisejavanews.com/episode-38-dec-2017 and there's a similar opinion about not bothering to upgrade to Java 9 since it isn't an LTS release. They're discussing https://www.infoworld.com/article/3223690/java/java-9-will-not-receive-long-term-support.html and over at https://youtu.be/Y1NJRGQwN8A?t=1h22m28s you can hear @thesteve0 say, "We as a Java community are in kind of a tricky place right now with supported Java because Java 9 support ends officially in September, I think, of 2018 and support for Java 8 ends offically September 2018." He goes on about this and it's a good listen. I think we should think hard about what definition of done for this issue means. I have no problem with Dataverse developers playing around with Java 9 features on their laptops, but let's not force our community into upgrading to a non-LTS release of Java by bumping the required version in our pom file. |
Since I just saw Java 9 mentioned at #4681 I want to reiterate that Java 9 is EOL. It no longer receives security updates. It was a non-LTS release. We should only be recommending LTS releases to our community. |
Hey guys, it just came to my attention that non-commercial support for Oracle JDK 8 will end in January 2019. There might huge impact for this project lurk in the shadows. As there will be no public updates to Oracle JDK 8 available anymore, people would be forced to use unsafe systems. That most certainly is not what they (should) want... Updates to OpenJDK 8 seem to be coming in anyway, see here and here. IMHO there should be some actions taken to be future-proof:
/me willing to act on this if help needed/wanted. |
@poikilotherm thanks for you comment. It's good to know that a new LTS release of Java is finally out. I wonder when I'll be able to run With regard to what the Dataverse Installation Guide recommends in terms of where to download Java from, this is the quote from https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later that caught my eye:
Here's what the guides say right now (permalink for the same section you linked to) at http://guides.dataverse.org/en/4.9.2/installation/prerequisites.html#installing-java I guess I'm confused about if it's free as in beer to use Oracle JDK 11 or not. OpenJDK still seems to be free. In the Dataverse Installation Guide we don't currently require or recommend software you have to pay for. All the dependencies can be downloaded for free. |
Indeed, OpenJDK is free and will be free forever. This is the reference implementation on that any other JVM I'm aware of (with an exception for Android Java AFAIK) is building upon. Oracle will provide two downloads:
The links in the docs currently point to the future-non-free "Oracle JDK". (Sidenote: IIRC the "Oracle JDK" will stay free of charge for development and testing, but not for staging and production environments) |
@poikilotherm ok, if paying for a license is required for Oracle JDK in production for R&D institutions, it sounds like we should switch to OpenJDK for the Installation Guide (and testing leading up to it). I see your side note about testing but any thoughts on what's written at http://guides.dataverse.org/en/4.9.2/developers/dev-environment.html#install-java ? On Mac I've always used Oracle JDK for development. Here's a screenshot: |
@pdurbin wrote:
Citing https://access.redhat.com/articles/3409141 about that:
@pdurbin wrote:
Currently I have no proof in form of a written document somewhere, just the live experience here at FZJ. We had a license audit from Oracle some time ago, when they wanted to know if some enterprise Java analysis tooling is in use. IIRC that where some profiling and heap analysis things that shipped with the JDK but their use required a commercial license. Lesson learned from that: for Oracle R&D is just like other commercial activities. Currently a lot of people here are whirring sirens regarding the Oracle JDKs used all around the campus because of that very lesson.
I am using OpenJDK 8 (1.8.0_181) for development on my laptop and don't see any reason why not to use it for most scenarios. The beast to tame is Java 11, where a lots of things changed coming from 8. And of course there always may exist some kind of race conditions or other changes, that hurt us now not being present while using Java 8. The only things that helps with this is proper unit testing, integration tests and end-to-end tests, ideally combined with testing on different sizes of deployments and data inside plus some bigger cannons like Artillery. (Hell yeah, I'm just dreaming... 😄 Most certainly the majority of this will never happen, right?) |
@poikilotherm ok, is your dev environment Mac or Linux? I just downloaded openjdk-11+28_osx-x64_bin.tar.gz for Mac from http://jdk.java.net/11/ and uncompressed it and it seems to run fine on my Mac running OS X 10.11 (El Capitan):
It would be nice if I could install this via |
As of 5390f28 on the "develop" branch Dataverse does not compile on Java 11 (openjdk 11 2018-09-25 on Mac). I ran this:
And got compilation errors like this:
This ambiguity can be resolved by specifying
... but now there are other errors:
We should get Dataverse compiling on Java 11 since it's the next LTS release after Java 8. According to https://www.theregister.co.uk/2018/09/26/oracle_java_11_binary_code_license/ "After January 2019, Oracle will no longer provide free updates to Java 8, which means shifting to a supported version of Java, relying on OS vendors to provide Java patches, paying a third-party for support, building the OpenJDK on your own, or getting builds from AdoptOpenJDK." |
Hi @pdurbin, I just created #5116. If you want to try it out, go ahead 😄 My results are mixed. To use my branch:
Watch unit tests fail at two tests currently:
This seems to be related to a different message since JDK 8 and a change in handling of media files. Needs more evaluation though. Valuable sources for the upgrade: |
IMHO this is not a very clean approach. See my solution in cd5296d, which I find to be more inline with good coding practise. |
@poikilotherm thanks for the pull request and links. Yes, I was just trying to illustrate what "Module" is in our code. Let's go with your approach. In my mind the next steps are:
The thing is though, we're going to have to wait for CentOS or EPEL to provide Java 11 RPMs, right? (Are you following https://fedoraproject.org/wiki/Changes/java-11-openjdk-TechPreview#How_To_Test ?) |
I think as soon as RHEL upstream will provide them, they will be in CentOS shortly after. Both failing tests need debugging... 😞 Not easy to tell why this is not working as supposed. |
@poikilotherm I went ahead and assigned this issue to you and dragged it to "community dev" at https://waffle.io/IQSS/dataverse Once we decide the scope for this thing (Vagrant? Docker? OpenShift? Installation Guide?) let's rename the title of this issue from "Java 9 Upgrade" to something more reasonable. Or even before we decide the exact scope. Java 9 is EOL. |
Hey @pameyer, once the unit tests are all fixed, I will need to tackle the integration tests. Currently, those run in the What makes more sense to you guys: try to
(As suggested by @pdurbin I'm pulling @donsizemore into this, too 😄 ) |
@poikilotherm With the caveat that I think IQSS jenkins is still the authoritative "source of truth" for integration tests; I think it might make sense to start with another container for Java 11. But part of that is because I'm not too familiar with Travis CI or Arquillian - so if these are a simpler approach, I'm not opposed to it. My (completely unsupported) suspicion is that the current state of Dataverse dockerization deviates sufficiently from best practices that there might be some impedance mismatch trying to use more sophisticated tooling. But technical evaluations beet unsupported suspicions if you think it's worth investigating. |
Oracle will stop giving out free security updates for Java 8 this month so I just switched to AdoptOpenJDK 1.8.0_192-b12 on my Mac and it works fine. I downloaded it from https://adoptopenjdk.net and untarred it to /Library/Java/JavaVirtualMachines/jdk8u192-b12 where my Mac and Netbeans picked up the change immediately. Also, @landreev checked Harvard Dataverse are we are not using Oracle's Java any more. We get Java from yum (CentOS 7) so normal patching should keep Java 8 secure for us. That said, installations of Dataverse will want to move to Java 11 some day, I assume. Does anyone know when? If so, please leave a comment. 😄 |
FIXME: Switch back to "image/png". It's unclear why upgrading from Java 8 to Java 11 changed the file type to "application/octet-stream" in the FileUtil.determineFileType test.
The summary from #5512 is that we are blocked on upgrading to Java 11 because it's not supported by Glassfish or Payara. From what I can tell JBoss got support for Java 11 only recently but so far we only use Glassfish. |
I just noticed "GlassFish 5 is not supported on JDK 9+. There's hundreds of other problems to be solved in addition to this one. I'm closing this bug." at eclipse-ee4j/glassfish#22130 (comment) |
I'm going to go out on a limb here and suggest that Payara will probably have support for Java 11 before Glassfish does. Payara has an (unmerged) branch they are encouraging users to test. Please see payara/Payara#2296 (comment) |
Payara 5.192 just came out and supports Java 11 as a tech preview: "At long last, Payara Platform is shipping with support for JDK 11. It should be stressed that firstly: this support is in tech preview and secondly: if upgrading from an older version of Payara, you'll need to add some extra JVM options to your domain.xml configuration files." https://github.com/payara/Payara/releases/tag/payara-server-5.192 |
…eeds more updating in its own issue
At some point we should upgrade to Java 9 to gain the power of new java technology and remain secure.
Outcome of the #4217 spike.
The text was updated successfully, but these errors were encountered: