The project that started it all

As I’m writing this entry, we’re in the last days before launching igniterealtime and I’m waxing nostalgic about the project that started all of our real-time efforts, Smack. It was four years ago that I looked around for a good Java XMPP client library and came up short. There were some other libraries out there, but most of them assumed that you already knew the in’s and out’s of the protocol and I was a full-on XMPP noob at the time. The goal for Smack simple: create an API easy enough to use that even someone like me could figure it out.

We’ve stuck with that focus in each subsequent Smack release, even as the functionality has grown richer and richer. In between torrid work on the next Wildfire and Spark releases, we’ve slipped in work on Smack 3.0 (partially with the generous help of community members Francisco and Gabriel). Some of the major changes that are coming:

  • Uses JDK 1.5 for cleaner syntax and simplified code.

  • Support for re-using an XMPPConnection when the TCP/IP connection fails, including an auto-reconnect feature.

  • Rounded out support of the XMPP RFC’s through better error packet handling and privacy lists support.

  • Ability to listen for new chat requests, which I felt was one of the major remaining design flaws in the library (thanks Alex!).

  • Tons of bug fixes.

There’s no planned release date yet, but we’ve been using the latest code in Spark for quite some time.

So, a taste for where it all started and where it’s going. But the really interesting part for me is where Smack is being used. Have an interesting application of Smack? Please post a comment to tell us about it!

We are using smack 2.2.1 in our project on server side. Unfortunaly, we have discovered recently a memory leak in current smack release. It would be nice to work out a leak-free version of XMPP library. This memory leak prevents us to use current smack implementation in final release.


Can you post more about your issue in the forums? We’re not aware of any memory leaks, but will look into and fix any issues you report!



Seems, this problem is already described on developer forum:

The problem is that XMPPConnection.close() does not free resources.

I think the docs are wrong

MultiUserChat muc = new MultiUserChat(conn1, "");

// Create the room


shouldn’t it be testbot not myroom

MultiUserChat muc = new MultiUserChat(conn1, "");

Thanks MaTT