pip/pip-421.md
Currently, Pulsar requires Java 17 for the server side components and Java 8 for the client SDK and the client admin SDK.
For the server side components the change was done in PIP-156 [1] in April 2022. At the time it was deemed too early and not necessary to require Java 17 for client SDK as well.
There has been a discussion in February 2023 as well [2] where the consensus still was to keep supporting Java 8.
Since the previous discussions, there have been several changes in the Java & Pulsar world:
Many popular Java libraries have started switching to requiring Java >= 11 or >= 17. This is posing a real problem because we are stuck into old and unsupported versions. When there is a CVE flagged in these dependencies, we don't have any way to upgrade to a patched version.
Non-exhaustive set of libraries requiring Java >= 11:
There are certainly more dependencies we are using today that have already switched new versions to Java 17. This will pose a growing risk for the near future.
The assumption is that the vast majority of Java users have made migrations directly from 8 to 17. Java 11 has already stopped the premier support, so there would be no strong reason to settle on 11.
Technically, we could upgrade these dependencies and only require Java 17 for pulsar-client-admin and Java 8 for
pulsar-client. While this option might offer a wider compatibility today, it would introduce further confusion
on which Java is required for which component, which I don't believe is worth the effort.