sounds good to me. As you mentioned, Java 8 users can stay on 4.0.x, so that 
support isn't going away anytime soon. (4.0.x security support is in our plans 
until 21 Oct 2027)

-Lari

On 2025/05/29 20:53:40 Matteo Merli wrote:
> https://github.com/apache/pulsar/pull/24364
> 
> ---
> 
> # PIP-421: Require Java 17 as the minimum for Pulsar Java client SDK
> 
> # Context
> 
> 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.
> 
> # Motivation
> 
> Since the previous discussions, there have been several changes in the Java
> & Pulsar world:
> 
>  1. Java 8 has been out of premier support for 3 years already [3] and its
> usage has been drastically decreasing
>     over the years, from 85% in 2020, 40% in 2023 and 23% in 2024 [4]. All
> indicate that by 2028, usage of Java 8
>     will be negligible.
>  2. Java 17 LTS was released ~4 years ago, and it's quite widely adopted in
> Java production environments,
>     along with Java 21 LTS.
>  3. Pulsar introduced the concept of LTS release which does get support for
> 2-3 years. This means that a change
>     we make now will not really affect users sooner than the current LTS
> goes out of the support window.
> 
> 
> ## Issues with dependencies
> 
> 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:
> 
>  * Jetty 12 - We are currently using Jetty 9.x, which is completely
> unsupported at this point and
>    there are active CVEs in the version we use.
>  * Jersey 3.1 - In order to upgrade to Jetty 12, we'd need to upgrade
> Jersey as well.
>  * Jakarta APIs - All new APIs for WS and Rest require Java 11.
>  * AthenZ - This is an optional dependency for authentication, though all
> new versions require Java 17.
> 
> 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.
> 
> ### Why Java 17 instead of jumping to 11
> 
> 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.
> 
> # Changes
> 
>  1. From Pulsar 4.1, require Java >= 17 for all client modules
>  2. Pulsar 4.0 will continue with the current status of requiring Java 8
> for clients. This will give an
>     additional 3 years for users that are stuck on Java 8, up to 2028.
>  3. If there is still interest in supporting Java 8 client after 2028, we
> would still be able to have extra
>     releases for the 4.0 branch to address issues, security fixes. Although
> we need to be aware that it
>     might be very hard to patch all vulnerabilities reported in
> dependencies at that point.
> 
> ## Rejected alternatives
> 
> 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.
> 
> # Links
> 
>  * [1] PIP-156 (Build and Run Pulsar Server on Java 17)
> https://github.com/apache/pulsar/issues/15207
>  * [2] Mailing list discussion
> https://lists.apache.org/thread/cryoksz7n2066lzdcmhk9jy322lvh11t
>  * [3] Java support and EOL timeline: https://endoflife.date/oracle-jdk
>  * [4] NewRelic report on Java ecosystem
> https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem
> 
> 
> 
> --
> Matteo Merli
> <mme...@apache.org>
> 

Reply via email to