Lari, We know that there will be work to do, I am happy to do what is needed in order to make this work Thanks for pointing it out
Enrico Il giorno mar 9 feb 2021 alle ore 09:44 Enrico Olivelli <eolive...@gmail.com> ha scritto: > Sijie, > > Il giorno mar 9 feb 2021 alle ore 09:42 Sijie Guo <guosi...@gmail.com> ha > scritto: > >> Can we start with making Pulsar is able to run with both Java 8 and Java >> 11? >> > > That's exactly my proposal for the short term (2.8) in the footer of my > initial message: > > >> I believe that enforcing JDK11 on the server side side is a big move > and we should announce it with care and let users prepare for this jump. > >> So in the meantime we could start with a soft transition plan, starting > for 2.8 release: > >> - Build Pulsar on JDK11 and run CI on JDK11 > >> - Set maven.compiler.release to JDK8 > >>- Change docker images to JDK11 > > >> This way: > >> - consumers of the Java client will be able to run on JDK8 > >> - consumers of the Binary tarballs for the server will be able to run > on JDK8, say for Pulsar 2.8 > >> - consumers of Docker images will start to enjoy JDK11 > >> - Pulsar developers will get used to having JDK11, but they won't be > able to leverage JDK11 language and JRE features (only faster runtime, > GC....) > > > Enrico > > >> >> Because I think there are still a lot of users running with Java 8. >> >> - Sijie >> >> On Mon, Feb 8, 2021 at 2:32 AM Enrico Olivelli <eolive...@gmail.com> >> wrote: >> >> > Hello Pulsar community, >> > I would like to start a discussion about Java 11 support and about >> dropping >> > support for JDK8 on the server side. >> > It will take time, see my points below. >> > >> > At the moment we have these use cases about Java compatibility: >> > - Java client users >> > - Building Pulsar and running Pulsar tests >> > - Server users that use the binary tarball >> > - Apache Pulsar Docker images consumers >> > >> > I have been running in production BookKeeper and Pulsar on modern JDKs >> > (Java version > 8) for much time and I see that there are no issues at >> > least for the scenarios I have seen. >> > >> > JDK11 is currently referred to as LTS by major vendors (for whatever it >> > means, please do not enter a "Java LTS thread", there are plenty of >> threads >> > about what is Java LTS about) and Java 17 is coming. >> > I expect that any of the new users will start running on JDK11 (and >> > probably on JDK15 for the early adopters) if they do not want to pay for >> > JDK8 support >> > >> > Also the latest versions of Presto require Java 11 to run, if we do not >> > move to Java 11 we won't be able to upgrade Presto. >> > >> > This is what I expect on the mid term (after 2.8): >> > >> > 1) Java Clients: stick to JDK8 compatibility >> > I believe that on the Java client side we should stick to JDK8 >> > compatibility, because unfortunately JDK8 is still a version that is >> widely >> > used in the industry. >> > In order to ensure JDK8 compatibility we have useful tools: >> > - there are Maven plugin that ensure that we are not producing and >> > consuming third party libraries that are not compatible with JDK8 >> > - we can add one (or more) Maven modules that run on CI using JDK8 and >> > consume the artifacts produced by the build >> > >> > 2) Building Pulsar and running Tests >> > We can require Pulsar to be built on JDK11. >> > We can set maven.compiler.release to 11 in generale and >> > maven.compiler.release to 8 for all of the modules that concur to build >> up >> > the Java client >> > Tests will run on JDK11 on CI. >> > We could desire to run the Pulsar client tests on JDK8, but many of them >> > are indeed inside the pulsar-broker module. >> > >> > 3) Server users that use the binary tarball >> > We will have to announce that from Pulsar 2.x (2.8 or 2.9?) Pulsar >> server >> > side components will require JDK11 >> > The same applies to users that run Pulsar broker by starting it from the >> > Jars deployed to Maven central. >> > >> > 4) Docker images consumers: >> > This is easy, just change the images in order to use JDK11. >> > >> > >> > I believe that enforcing JDK11 on the server side side is a big move >> and we >> > should announce it with care and let users prepare for this jump. >> > >> > So in the meantime we could start with a soft transition plan, starting >> for >> > 2.8 release: >> > - Build Pulsar on JDK11 and run CI on JDK11 >> > - Set maven.compiler.release to JDK8 >> > - Change docker images to JDK11 >> > >> > This way: >> > - consumers of the Java client will be able to run on JDK8 >> > - consumers of the Binary tarballs for the server will be able to run on >> > JDK8, say for Pulsar 2.8 >> > - consumers of Docker images will start to enjoy JDK11 >> > - Pulsar developers will get used to having JDK11, but they won't be >> able >> > to leverage JDK11 language and JRE features (only faster runtime, >> GC....) >> > >> > I can start a PIP, but I believe a little discussion on the ML is a good >> > starting point. >> > >> > Thoughts ? >> > Enrico >> > >> >