To be clear, the minimum version for users or developers won't change at all, still just 17+. Only the JDK version the release build must be performed with goes to 25 so it can actually enable the 25+ runtime support.
So personally I'd just be putting this in a 2.44.0 release (and aiming to do it fairly soon as Java 25 support is overdue, lack of it is blocking other projects already). On Sat, 18 Oct 2025, 04:44 Jean-Baptiste Onofré, <[email protected]> wrote: > +1 > > It makes sense to me. Maybe worth to target this in Artemis 2.50 ? > As Artemis 2.43 is on JDK17+, if we set the minimum version to JDK25+, > I think it would be a good "indicator" for our users. > > I'm in favor of multi-release-jars (and if possible avoid reflections :)). > > Regards > JB > > On Fri, Oct 17, 2025 at 7:32 PM Robbie Gemmell <[email protected]> > wrote: > > > > I'd like to propose that we require Artemis releases to be created > > using JDK 25 going forward. Elaboration below, after some key points > > first. > > > > The resulting releases would still only require Java 17+ to run, just > > as they do today. > > > > It would also still be possible to build / develop / test on JDK 17+, > > just as can be done today. > > > > However the release itself would have to be performed using JDK 25+, > > which the pom would enforce (much as it currently still enforces use > > of JDK 17 to do the release, for historic reasons that actually no > > longer hold). > > > > The reasoning behind this suggestion is around fixing support for Java > > 25+, while facilitating us to more nicely handle current breaking > > changes around Subject class, and also avoid other future breakages > > there, and similarly around the related removal of the SecurityManager > > and its API in general in future, whilst still supporting its use on > > earlier releases like Java 17 where we do have users that need it that > > we wish to support. > > > > These things can be done in a variety of ways. One of the ways > > involves a bunch of reflection, e.g [1] includes an example of this > > [lifted from Kafka] with ~600 lines of reflection and indirection > > classes [plus a bunch more for tests that were not also lifted]. > > > > Another approach is using multi-release-jars [2] to target different > > APIs and using a new enough JDK that you can compile to both the old > > APIs and the new APIs beginning from the version you wish to start > > targeting them, JDK25 in this case. I have created a work-in-progress > > example of this [3] that includes ~150 far simpler lines for the two > > distinct class versions used to bridge the different API/behaviour > > support. For the actual Artemis releases based on that approach, JDK > > 25 would need to be used so that the release contained both the '17+ > > base class' and the '25+ replacement class' that the respective 17+ > > and 25+ users would need. Outside of creating the releases though, > > folks could continue using e.g JDK 17 or 21 to build/develop/test > > things, just as they do today, and Java 17 would still be the minimum > > to run the release just as it is today. > > > > Thoughts on proceeding with approach in [3] and thus requiring JDK 25+ > > to create future Artemis releases? > > > > Robbie > > > > [1] Reflection shim: > https://github.com/apache/activemq-artemis/pull/5975/files > > [2] Multi-release jars: https://openjdk.org/jeps/238 > > [3] Multi-release jar shim: > > https://github.com/apache/activemq-artemis/pull/5976/files > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > For further information, visit: https://activemq.apache.org/contact > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > For further information, visit: https://activemq.apache.org/contact > > >
