Compatibility

With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility matrix has been prepared.

JDK Compatibility Across Kafka Versions

Module Kafka Version Java 11 Java 17 Java 23
Clients 4.0.0 ✅ ✅ ✅
Streams 4.0.0 ✅ ✅ ✅
Connect 4.0.0 ❌ ✅ ✅
Server 4.0.0 ❌ ✅ ✅

Note: Java 8 is removed in Kafka 4.0 and is no longer supported.

Server Compatibility

KRaft Cluster Version Compatibility 4.0 Server (dynamic voter) Compatibility 4.0 Server (static voter)
before 3.2.x ❌ ❌
3.3.x ❌ ✅
3.4.x ❌ ✅
3.5.x ❌ ✅
3.6.x ❌ ✅
3.7.x ❌ ✅
3.8.x ❌ ✅
3.9.x ✅ ✅
4.0.x ✅ ✅

Note: Can’t upgrade server from static voter to dynamic voter, see KAFKA-16538.

Client/Broker Forward Compatibility

Kafka Version Module Compatibility with Kafka 4.0 Key Differences/Limitations
0.x, 1.x, 2.0 Client ❌ Not Compatible Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
Streams ❌ Not Compatible Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
Connect ❌ Not Compatible Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
2.1 ~ 2.8 Client ⚠️ Partially Compatible More details in the Consumer, Producer, and Admin Client section.
Streams ⚠️ Limited Compatibility More details in the Kafka Streams section.
Connect ⚠️ Limited Compatibility More details in the Connect section.
3.x Client ✅ Fully Compatible
Streams ✅ Fully Compatible
Connect ✅ Fully Compatible

Note: Starting with Kafka 4.0, the --zookeeper option in AdminClient commands has been removed. Users must use the --bootstrap-server option to interact with the Kafka cluster. This change aligns with the transition to KRaft mode.