This is a really important design question.
Should we/can we really need to support backward compatibility with java 7 while being able to use java 8, 11, … ?
If answer is yes, then there is no other way than using the maven artifact for any module that is removed in java 8, 11,…
And I think first we need to answer this question, then we can decide which path we should go.
And some experienced person like @pspeed can be the right guy to answer this question.
I am not qualified to answer it, but for me, it is not important to keep with java 7. (I had lived with java 7 only for a few months when I first started programming then soon Java 8 came and I switched to it and now I am on 11) . So I am totally ok with giving up on java 7.
This brings up a whole new dimension: using java 8 and then only have new code use java 8 is odd in terms of consistency. But we also can’t refactor everything to java 8, but at least we could fix all the diamond operators.
This has always been supported in JDK7. It wasn’t in JDK6. Any code you see like that is fine to convert even if we don’t move to JDK8.
I feel like dropping JDK7 support is essentially cutting off a large swath of Android support. I don’t use it so I don’t “have a dog in that fight”… but I know others do and might miss being able to use JME for their projects. “But but… the latest phones will work just fine maybe with some tweaks and stuff because we haven’t tested it…” Even so, that cuts off a LOT of potential customers in a market that is already going to be small enough.
Personally, I don’t see a strong reason to move to JDK11 with any urgency. It’s really a shame that Java is getting messed up in totally incompatible ways. It had a long run, though. Given relative time scales, it could be that some monkey makes JME4 before it becomes an urgent problem.
The problem I see with JDK11 is not current compatibility. Rather, it is the new Oracle phylosophy to break stuff every 6 months, which means that we won’t be able to keep up and will fragment the community until death.
The major breaks the happened in jdk 9-11 we’re a Java cleanup of sorts. They we’re removing all of the old build tools and finished separating javaee from se. And although it causes a lot of growing pains, it will make the environment cleaner moving forward.
My understanding is that the only large change that came out in jdk12 is the disability to use reflection under what we consider normal circumstances. It is still possible, but will require modules to be fully implemented. Perhaps someone here might know more about that?