docs/getting-started/compatibility.md
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.
Module
</th> <th>Kafka Version
</th> <th>Java 11
</th> <th>Java 17
</th> <th>Java 23
</th> </tr> <tr> <td>Clients
</td> <td>4.0.0
</td> <td>✅
</td> <td>✅
</td> <td>✅
</td> </tr> <tr> <td>Streams
</td> <td>4.0.0
</td> <td>✅
</td> <td>✅
</td> <td>✅
</td> </tr> <tr> <td>Connect
</td> <td>4.0.0
</td> <td>❌
</td> <td>✅
</td> <td>✅
</td> </tr> <tr> <td>Server
</td> <td>4.0.0
</td> <td>❌
</td> <td>✅
</td> <td>✅
</td> </tr> </table>Note: Java 8 is removed in Kafka 4.0 and is no longer supported.
KRaft Cluster Version
</th> <th>Compatibility 4.0 Server (dynamic voter)
</th> <th>Compatibility 4.0 Server (static voter)
</th> </tr> <tr> <td>before 3.2.x
</td> <td>❌
</td> <td>❌
</td> </tr> <tr> <td>3.3.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.4.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.5.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.6.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.7.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.8.x
</td> <td>❌
</td> <td>✅
</td> </tr> <tr> <td>3.9.x
</td> <td>✅
</td> <td>✅
</td> </tr> <tr> <td>4.0.x
</td> <td>✅
</td> <td>✅
</td> </tr> </table>Note: Can’t upgrade server from static voter to dynamic voter, see KAFKA-16538.
Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
</td> </tr> <tr> <td>Streams</td> <td>❌ Not Compatible</td> <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).</td>
</tr> <tr> <td>Connect</td> <td>❌ Not Compatible</td> <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).</td>
</tr> <tr> <td rowspan="3">2.1 ~ 2.8</td> <td>Client</td> <td>⚠️ Partially Compatible</td> <td>More details in the Consumer, Producer, and Admin Client section.</td>
</tr> <tr> <td>Streams</td> <td>⚠️ Limited Compatibility</td> <td>More details in the Kafka Streams section.</td>
</tr> <tr> <td>Connect</td> <td>⚠️ Limited Compatibility</td> <td>More details in the Connect section.</td>
</tr> <tr> <td rowspan="3">3.x</td> <td>Client</td> <td>✅ Fully Compatible</td> <td>—</td> </tr> <tr> <td>Streams</td> <td>✅ Fully Compatible</td> <td>—</td> </tr> <tr> <td>Connect</td> <td>✅ Fully Compatible</td> <td>—</td> </tr> </table>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.