| Library | Language | Built on | Licence | Latest release |
|---|---|---|---|---|
| kafka-clients | Java | Reference implementation | Apache 2.0 | 4.3.1, 25 Jun 2026 |
| Spring for Apache Kafka | Java (Spring) | kafka-clients | Apache 2.0 | 4.1.1, 20 Aug 2026 |
| confluent-kafka | Python | librdkafka | Apache 2.0 | 2.15.1, 10 Sep 2026 |
| kafka-python | Python | Pure Python | Apache 2.0 | 3.0.11, 16 Aug 2026 |
| aiokafka | Python (asyncio) | Pure Python | Apache 2.0 | 0.14.0, 29 Apr 2026 |
| @confluentinc/kafka-javascript | Node.js 2,131 | librdkafka | MIT | 1.10.1, 10 Sep 2026 |
| KafkaJS | Node.js | Pure JavaScript | MIT | 2.2.4, 27 Feb 2023 |
On the JVM, use kafka-clients, through Spring in Spring applications. In Python, confluent-kafka is the default, with registry serializers and asyncio built in; kafka-python and aiokafka need no native code. In Node.js, start with @confluentinc/kafka-javascript and move KafkaJS services when they next need a fix. Before mixing clients on a topic, check the partitioner (@confluentinc/kafka-javascript), the codecs each consumer reads (KafkaJS) and the features you rely on (KIP-848, transactions, share groups), which reach the Java client first.