+1

Enrico

Il Mar 3 Giu 2025, 08:17 Zixuan Liu <zix...@apache.org> ha scritto:

> +1
>
> Matteo Merli <mme...@apache.org> 于2025年5月30日周五 04:53写道:
>
>> 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