Table of Contents |
---|
Status
Current state: "Under Discussion" Adopted
Discussion thread: here [Change the link from the KIP proposal email archive to your own email thread]
JIRA: here [Change the link from KAFKA-1 to your own ticket]
JIRA:
Jira | ||||||
---|---|---|---|---|---|---|
|
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
...
- Java 17 was released in September 2021 including Records (JEP 395), Sealed Classes (JEP 409), Switch Expressions (JEP 361), Text Blocks (JEP 378), Pattern Matching for instanceof (JEP 394),
Stream.toList
and more. - Java 21 was released in September 2023.
- Apache Kafka 4.0 is likely to be released in Q3 2024.
- Several popular projects have set Java 17 (or newer) as the minimum supported version or have announced plans to do so in the near future: Jetty 12, Apache Spark 4.0, Spring 6, Spring Boot 3, Quarkus 3.7, Apache Tomcat 11. This is also being considered for Apache Flink 2.0, but hasn't been voted on yet.
- Apache Kafka 3.7, due in January 2024, will include official docker images for the first time. This deployment model includes the Java runtime (Java 21 in the initial version) and it aims to abstract the Java version from users who do not run custom code within the kafka broker (the majority of users).
...
Balancing the various aspects, we propose only deprecating Java 11 support for the kafka broker, its dependent modules and the tools module in Apache Kafka 3.7 with support being dropped in Apache Kafka 4.0. The remaining modules (clients, streams, connect, tools, etc.) will continue to support Java 11. This approach is similar to the one introduced by Elasticsearch 8.0 where the server requires Java 17, but the client requires an older Java version.
...
- Deprecate Java 11 build for the kafka broker and its dependent modules in Kafka 3.7: update documentation including the downloads page.
- In Kafka 4.0:
Set
sourceCompatibility/targetCompatibility/release
to17
for the relevant modules inbuild.gradle.
- Remove all Java 11 specific code from the relevant modules.
- Update Readme and documentation (including the downloads page) to specify Java 17 as a requirement for the kafka broker and relevant modules. All other modules (including clients, streams , and connect and tools) would continue to require Java 11 (as specified by KIP-750).
- The affected modules are: kafka-server-common, kafka-server, kafka_2.13, kafka-storage, kafka-metadata, kafka-group-coordinator, kafka-raft, kafka-shell, kafka-tools.
...
Users who have not and cannot upgrade the Java version used by the kafka brokers to Java 17 on the server can continue to use Kafka 3.x until they can upgrade the given cluster. This can be done incrementally since the protocol is compatible independently of the Java version.
...