I can understand the argument "people who want to be on older versions of
Java can use older versions of Hibernate ORM/Search".
However, this strategy will only benefit the projects if we *actually* stop
working on much older versions... Experience taught me that's unlikely, and
it's even more unlikely if we don't release a stable 6.0 (ORM and Search)
very soon, but I guess we can try. So... okay.

The fact remains that major integrators of our libraries are still on Java
8, and will be for the foreseeable future:

   - Spring still supports Java 8, and I very much doubt they will drop
   such support anytime soon.
   - Quarkus still supports Java 8, but I understand you plan to remove
   that support soon (end of year, maybe?)
   - Wildfly is probably not a problem right now, due to the strict
   backward compatibility requirements that rule out an upgrade to 6.0 anyway.
   - Infinispan is only now starting to talk about moving their build to
   Java 11 [1] (no idea if they intend to remove runtime support for Java 8,
   since that's a separate issue). But they're only talking about the server
   part, and even if they solve that, there's still Infinispan Embedded.
   - I may be forgetting someone?

For Quarkus/Spring, well... I suppose it comes down to what we discussed
above about users. With what you're proposing, if a framework supports Java
8, they will not be able to upgrade at all. If we're talking about one
year, that's manageable. If we're talking about leaving a whole framework
worth of users on an older version of ORM/Search for ten years, that's
terrible. The reality will be somewhere in the middle, and *I* certainly
don't know where.

For Infinispan, it's very much a blocking problem, since they are already
on Hibernate Search 6 and can't really pick a different version of our
library depending on the version of the Java runtime. We should probably
solve that before we take any decision, at least for Search.

[1]
https://infinispan.zulipchat.com/#narrow/stream/118645-infinispan/topic/JDK.2011


Yoann Rodière
Hibernate Team
yo...@hibernate.org


On Wed, 5 Aug 2020 at 18:02, Sanne Grinovero <sa...@hibernate.org> wrote:

> Sure, we can wait to drop Java 8 if you all feel strongly about it,
> but give my proposal a chance :)
>
> Let me address a couple random points:
>
> Java version 9 and 10 are not useful versions to support: only 8 and
> 11 have long term support, so 9 and 10 are already out of support. All
> surveys I've seen show that 9 and 10 have been largely ignored by
> production users and enterprise professionals: they either use 8 or
> 11, or occasionally people the very latest.
>
> So if there's any interest in taking advantage from any benefit which
> came in 9 onward (such as multi-release jars as mentioned by Steve),
> you might as well skip to 11.
>
> Specifically, multi-release jars have loads of tooling issues still,
> both for us and our end users (e.g. the IDE to show source code), and
> a big problem to support as people might end up using mismatched
> versions of the code.
>
> As I mentioned there are no extremely compelling reasons to jump to
> 11, but it does simplify some things, which - when used pervasively -
> simplify our own code and maintenance while introducing small runtime
> benefits as well, such as consuming slightly less memory with the
> improvements to collections and streams.
>
> Regarding users, I'm simply fine with letting people use our 5.x
> series for as long as they wish. You should all keep in mind that we
> have a very high number of users, and with a small team it's just not
> smart from our part to have them all try to jump on our latest: we
> risk getting drowned in feedback, it's better to be selective with our
> users and "pick" the ones which are more innovative. The ones still
> requiring Java 8 will eventually upgrade as well, I'm just not worried
> that we need to encourage them to upgrade right away.
>
> Last but not least, even if supporting Java 8 comes relatively easy
> for us, it's an additional burden and it's one we could avoid.
> Certainly easier to drop it than starting to waste our time on obscure
> issues caused by multi-release jars and such tools, or having to
> maintain compatibility including at dependency tree (xml-bind apis,
> and all those modules being different).
>
> It's an opportunity to simplify, I'd take it. For users, it's more
> important to set clear expectations and communicate this early.
>
> Thanks,
> Sanne
>
>
> On Fri, 24 Jul 2020 at 17:35, Steve Ebersole <st...@hibernate.org> wrote:
> >
> > I also think ORM 6 is not the time to do this.  Especially moving to Java
> > 11.
> >
> > I think it is worthwhile though to discuss possibly moving to Java 9 to
> > take advantage of multi-release jars as Christian mentioned.  But Java 9
> > has its own set of difficulties for adoption with modules.  It is a
> > tough call.
> >
> >
> > On Fri, Jul 24, 2020 at 10:09 AM Yoann Rodiere <yo...@hibernate.org>
> wrote:
> >
> > > Hi,
> > >
> > > I share Christian's concerns; Hibernate Search 6 is already a huge
> change
> > > for users, so I'm not sure reducing our potential user base even
> further by
> > > requiring JDK11 is a good idea.
> > >
> > > I don't have numbers, but from my understanding a lot of people are
> still
> > > on JDK8, be it only because of the whole modulepath mess that scared a
> lot
> > > of people off (even though modules are optional...). If someone can
> prove
> > > me wrong and show me reliable statistics about JDK8 users being a
> minority,
> > > I'd be glad to put JDK8 behind me, but I doubt that's the case...
> > >
> > > "Middleware" consumers of our libraries are another problem:
> > >
> > > * Infinispan 12, from what I can see, still supports JDK 8.
> > > * I believe Spring does, too.
> > > * Quarkus, well... I suppose you know about Quarkus better than me.
> > > * ...
> > >
> > > Regarding benefits:
> > >
> > > The only benefit I could see from moving to JDK11 is the availability
> of
> > > the Flow interfaces, which would certainly be useful to introduce
> proper
> > > Publisher/Subscriber support in Search queries. But then that's not
> > > something we'll have time to work on anytime soon.
> > >
> > > I may be mistaken, but I'm not sure Jigsaw is gaining enough traction
> to
> > > justify investing more than just defining automatic modules for the
> time
> > > being.
> > >
> > > As to multi-tenancy in JDBC... Let's finish ORM6 first? :) Nothing
> stops us
> > > from only publishing a 6.1, and then moving immediately to 7, if we
> really
> > > end up addressing all the higher-priority items faster than expected
> and we
> > > need JDK11 features soon.
> > >
> > > Bottom line: maybe we could just deprecate JDK8? Log a warning on
> startup?
> > > And yes, ORM7/Search7 may be a better time to move to JDK11.
> > >
> > > On a side note, I'm not as enthusiastic as Christian about Moditect;
> last
> > > time we tried to use it on Search, it required us to build with JDK11,
> so
> > > we couldn't use it, since we were building releases with JDK8. Though
> > > nowadays we build releases with JDK11 (and -release 8), so it may be an
> > > option.
> > >
> > >
> > > Yoann Rodière
> > > Hibernate Team
> > > yo...@hibernate.org
> > >
> > >
> > > On Fri, 24 Jul 2020 at 16:23, Christian Beikov <
> christian.bei...@gmail.com
> > > >
> > > wrote:
> > >
> > > > Hey,
> > > >
> > > > I'm not sure it is a good idea to do this for Hibernate ORM 6
> already as
> > > > that would probably hinder adoption. Some projects just didn't
> update to
> > > > Java 9+ yet because using the newer versions would have no real
> benefit.
> > > >
> > > > We can use the Multi-Release JAR feature to make use of JDK features
> > > > introduced in newer Java versions. Since the Java 11 doesn't provide
> any
> > > > significant languages changes for which it would be worth dropping
> > > > support for Java 8, I see no reason for raising the minimum version
> > > > requirement.
> > > >
> > > > We can benefit from Jigsaw already by defining module-info file and
> let
> > > > the moditect plugin(from Gunnar) compile it. If necessary, we can
> make
> > > > use of the Multi-Release JAR feature to use the module system APIs.
> > > >
> > > > How about raising the minimum Java version for Hibernate ORM 7
> instead?
> > > >
> > > > Regards,
> > > >
> > > > Christian
> > > >
> > > > Am 24.07.2020 um 16:00 schrieb Sanne Grinovero:
> > > > > Hi all,
> > > > >
> > > > > [meta: I had this email as a draft on hold since a year; very glad
> to
> > > > > finally be able to send it.]
> > > > >
> > > > > We're usually quite conservative in dropping support for older JDKs
> > > > > within the Hibernate team, but there's an increasing maintenance
> (and
> > > > > development) cost when keeping older JDK compatibility for too
> long.
> > > > >
> > > > > In particular, Java 8 compatibility was so far still a requirement
> for
> > > > > various strategic integrations; first, we had runtimes targeting
> > > > > GraalVM still needing it, but they support Java 11 now as well;
> after
> > > > > that, Azure Functions were also still requiring Java 8, but this
> > > > > limitation was resolved now.
> > > > >
> > > > > We're aware that Java 8 is still widely used; still I think we
> need to
> > > > > look forward - for various reasons, including maintenance burden,
> and
> > > > > to deliver a better experience on the later versions of the JDK.
> Also,
> > > > > looking at the existing usage statistics implies a fallacy: that's
> > > > > current production usage, while the code we normally work is
> > > > > (typically) not going to see production usage for quite some time.
> > > > >
> > > > > While we'll want to keep Java 8 compatibility for existing
> > > > > [maintained] releases, there is no compelling reason anymore to
> keep
> > > > > doing this for the upcoming major releases.
> > > > >
> > > > > So I'd propose we require Java 11 the minimum compatible runtime
> for
> > > > > ORM v6 onward, and I'd suggest we do the same with all our actively
> > > > > developed projects.
> > > > >
> > > > > Initially, I don't really expect this to significantly increase the
> > > > > efforts from our already packed roadmaps: in the first stage this
> > > > > proposal is literally only about making minimal changes to our
> build
> > > > > scripts to change the compatibility versions, and for CI to stop
> > > > > testing the JDK/branches combinations which are no longer
> supported.
> > > > >
> > > > > In a second step, as convenient, we'll be able to:
> > > > >   - do some code cleanup / refactorings to benefit from the minor
> API
> > > > > improvements of the JDK
> > > > >   - some APIs had more substantial improvements, such as java.sql
> now
> > > > > features native support for multi-tenancy, literals and identifiers
> > > > > enquoting [among others] .. might be interesting.
> > > > >   - finally benefit from Jigsaw?
> > > > >
> > > > > Any thoughts?
> > > > >
> > > > > Thanks,
> > > > > Sanne
> > > > > _______________________________________________
> > > > > hibernate-dev mailing list
> > > > > hibernate-dev@lists.jboss.org
> > > > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > > > _______________________________________________
> > > > hibernate-dev mailing list
> > > > hibernate-dev@lists.jboss.org
> > > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > > >
> > > >
> > > _______________________________________________
> > > hibernate-dev mailing list
> > > hibernate-dev@lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> > _______________________________________________
> > hibernate-dev mailing list
> > hibernate-dev@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
_______________________________________________
hibernate-dev mailing list -- hibernate-dev@lists.jboss.org
To unsubscribe send an email to hibernate-dev-le...@lists.jboss.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to