// the find
eclipse-paho/paho.mqtt.java
Eclipse Paho Java MQTT client library. Paho is an Eclipse IoT project.
Eclipse Paho is the reference Java MQTT client, covering both MQTTv3 and MQTTv5 with sync and async APIs. It's what you reach for when you need MQTT on the JVM and don't want to write wire protocol code yourself. Widely deployed in embedded/IoT Java stacks and Android.
Both MQTTv3 and MQTTv5 are implemented in separate modules, so you can target the exact protocol version your broker supports. The async/sync API split is clean — MqttAsyncClient does callbacks properly, MqttClient is a thin synchronous wrapper rather than a reimplementation. Offline message buffering with DisconnectedMessageBuffer is built in, which matters for unreliable IoT network conditions. The wire protocol implementation is self-contained with no heavy dependencies, keeping it usable on constrained environments like Android.
Development has essentially stopped — last push was August 2024 and the project has been in low-activity maintenance mode for years; open issues with no response are common. The v3 client internals use raw threads and shared mutable state that predates modern Java concurrency idioms; integrating it with virtual threads or reactive stacks is awkward. The MQTTv5 client module feels bolted on rather than designed-in — it doesn't share a common interface hierarchy with the v3 client, so swapping protocol versions means rewriting call sites. CI still references Travis and the sample code in the README points to iot.eclipse.org which has been decommissioned.