Replies: 6 comments 9 replies
-
|
we could still aim and target Java 8 on the language level - but change our main builds to eg java 17 |
Beta Was this translation helpful? Give feedback.
-
|
I've been blocked for some dependencies update on the contrib repo for this reason. In the other end, I saw that OpenJDK support for Java 8 is until November 30, 2026 and Oracle has an extended support for it until December 2030. So I am a bit unsure what's best here. |
Beta Was this translation helpful? Give feedback.
-
|
Great timing @aepfli ! Last week I specially reached out to some organizations which are large OpenFeature adopters who have historically been stuck on Java 8. I wanted to have input from these parties before formally proposing moving to a Java 11 minimum, but it's great to start the conversation in the open now. I'll engage the TC and continue to seek input from the specific orgs this might concern. |
Beta Was this translation helpful? Give feedback.
-
|
From a technical perspective, we can target Java 11 in a Java 17 build environment, certainly, but my understanding is that the risk of that is that it's still possible to accidentally use Java 12+ APIs in this situation and they won't be caught until some consumer then tries to use the resultant class files in a Java 11 VM which then breaks because these APIs are missing. So I think we just need to have some small part of our CI run some subset of relatively broad tests in Java 11 to ensure things are good, even if the majority of the CI runs in 17... TBH we could possibly even do this now for Java 8. |
Beta Was this translation helpful? Give feedback.
-
|
and here is some information from the spring framework https://spring.io/blog/2022/03/28/an-update-on-java-17-adoption |
Beta Was this translation helpful? Give feedback.
-
|
It seems I'm a little late to the discussion, as open-feature/java-sdk#1371 already happened, but perhaps I can add some more perspective here.
It holds that special position as the version before the JDK release cadence changed, when the next version was promised to be unsupported after six months. Even with other more 'generally agreed to be' LTS versions like 11, 17, 21, a huge amount of companies are holding on to Java 8, for good reason: it will continue to be supported. It doesn't get much attention, because the hype is for the shiny new Java features. Even what usage survey results exist are not very trustworthy, because the kinds of companies that are still using Java 8 are not necessarily the kind to be sharing telemetry data with NewRelic, for example. You can bet that Oracle will extend support beyond 2030, if there's support money to be gained. Even if not, there will still be users. There are still users of Java 6 & 7 too.
With the exception of Spring all those examples listed are either test dependencies or build tool plugins. Projects can run tests with Java 21, and still want to compile Java 8 bytecode. But one can't link against Java 11 bytecode when compiling a Java 8 project. Compile time libraries need to be more conservative. Don't take Spring as a good example to emulate. There are plenty of teams that would rather remove Spring from their project than be forced to follow their JDK upgrade cadence. Libraries shouldn't pressure their users to choose between keeping up with maintenance updates or using their JDK of choice. A better example to emulate is SLF4J: qos-ch/slf4j#379 Version 2.0.0 was the first to require JDK 8, in 2022. The 1.7.X series only requires JDK 7. Everyone else is doing it or the lure of cool new language features isn't enough to justify alienating Java 8 users. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Java 8 has been out there for quite a while, and development on Java 8 has been dropped (still providing security and bug fixes) by a lot of tools or is in the process of being dropped - often, they aim for Java 17:
I do think that our SDK and tools provide already a good set of functionality, so we could move into that direction too.
furthermore, there is this nice read https://openjdk.org/jeps/14 (where we could still support an old version and provide security fixes - tip and tail)
I think it is time to at least start the discussion and document our reasons behind one or the other, to have a basis for future discussions. What do you think?
cc @open-feature/sdk-java-maintainers @open-feature/sdk-java-approvers
Beta Was this translation helpful? Give feedback.
All reactions