It is necessary for a variety of reasons to move to Java 11 as a baseline platform requirement.
Moving to Java 11 is a process that has to be taken in steps. The following requirements must be met:
11 as release in compiler plugin configuration: #????Is there any risk in requiring 11 wrt user libs? Are there any popular user lib that doesn't work when running on jdk > 8?
User libs are an open-ended set, so the answer is (asymptotically) "yes" IMO. Hopefully at the point we start printing the deprecation warning, those kinds of issues will bubble up rapidly.
/me apologizes to any experts on set theory :)
For the record, for the container images, I have duplicated all of them to have the java8 and java 11 ones. For example https://quay.io/repository/quarkus/ubi-quarkus-native-image?tab=tags
@cescoffier do you want to add check items to cover the container image work? If so, please add them in the approximately correct place (chronologically). Thanks
@dmlloyd I have already done the container image work. So chronologically speaking it was first and checked :-)
Great, that means we're already well along our way, let's add that check! :)
What about other tasks e.g. deprecating the 8 image, any future cleanup work after we drop 8, etc.?
@dmlloyd yes, cleanup and reverting to single image would be required once we decide to go full steam with java 11.
Edit: Tasks added to the list.
It is necessary for a variety of reasons to move to Java 11 as a baseline platform requirement.
Can we list those variety of reasonsas I'm sure we'll have many users still for whatever reasons (good and bad) stuck on java8. Would be great to have stated explicitly why java 11 beyound "it's the newest" for them to understand the advantages/needs.
It is necessary for a variety of reasons to move to Java 11 as a baseline platform requirement.
Can we list those variety of reasonsas I'm sure we'll have many users still for whatever reasons (good and bad) stuck on java8. Would be great to have stated explicitly why java 11 beyound "it's the newest" for them to understand the advantages/needs.
In fact we never intended to support Java 8 at all. It was a requirement for native image generation only. The only reason that really matters is that Java 8 is extremely outdated and should really not be used for new projects, generally speaking.
Is the checklist up to date?
We can probably close this "epic" and defer some of the minor polishing tasks?
I think it mostly is, I updated it yesterday.
I prefer to have one issue that centralizes this personally so that we can be sure we don't forget anything.
The main task - requiring 11 - doesn't even have an issue yet, so there's a bit more than "minor polishing" left... :-)
I think it mostly is, I updated it yesterday.
I prefer to have one issue that centralizes this personally so that we can be sure we don't forget anything.
Fair enough, just checking this wasn't an abandoned issue.
The main task - requiring 11 - doesn't even have an issue yet, so there's a bit more than "minor polishing" left... :-)
Ok, but note that this issue is named "migration" not "requiring" - so I assumed we were good enough.
@dmlloyd when importing the Quarkus sources in IDEA, at least in my case it defaults to JDK11 and then it fails to compile because of:
import sun.misc.Signal;
import sun.misc.SignalHandler;
in io.quarkus.runtime.Application . Is that something on your radar?
That's odd. Those classes are present in 11 (in the jdk.unsupported module) and I don't seem to have that problem, despite also using 11 as my default.
Probably related to log4j2 multi-release feature, I get this warning:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
I run under Java 11 but I think you'll see it from Java 9 on.
@dmlloyd when importing the Quarkus sources in IDEA, at least in my case it defaults to JDK11 and then it fails to compile because of:
import sun.misc.Signal;
import sun.misc.SignalHandler;in io.quarkus.runtime.Application . Is that something on your radar?
Hello @Sanne, just saw your comment today. I remember running into this issue with IntelliJ IDEA too. Took me a while to understand that this is a IDE configuration issue. I had to "uncheck" the "Use '--release' option for cross-compilation (Java 9 and later)" under Preferences -> Build, Execution, Deployment -> Compiler -> Java Compiler to get the build working. That checkbox was (by default?) checked in my case which was causing this error.
Hello @sorin-costea,
Probably related to log4j2 multi-release feature, I get this warning:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
I run under Java 11 but I think you'll see it from Java 9 on.
Can you please create a separate issue adding details about your Quarkus usage and when you see this message?
Most helpful comment
In fact we never intended to support Java 8 at all. It was a requirement for native image generation only. The only reason that really matters is that Java 8 is extremely outdated and should really not be used for new projects, generally speaking.