Smack API 4.1.0

Smack is an Open Source XMPP (Jabber) client library for instant messaging and presence.
A pure Java library, it can be embedded into your applications to create anything from
a full XMPP client to simple XMPP integrations such as sending notification messages
and presence-enabling devices.

Smack API 4.1.0

The Ignite Realtime community is very happy and proud to announce the release of Smack 4.1.0, our open source XMPP client library. Since Smack 4.1 is not binary compatible with Smack 4.0, i.e. it is not a drop-in replacement, make sure to have a look at the "Smack 4.1 Readme and Upgrade Guide".

Smack 4.1 marks a milestone in the development history of Smack, as its obsoletes aSmack, the build environment formerly required to port Smack to Android. Starting with 4.1, Smack is able to run natively and unmodified on Android.

A further release highlight, among many others, is the support for XEP-198: Stream Management. Note that like every new big feature, Stream Management is disabled by default.

Now go ahead and implement a open source XMPP client with Smack. Be it for Android or one of the many platforms supported by Java. But even more importantly, provide feedback and help to improve Smack. We try our best to make Smack one of the best, stable and reliable open source libraries for XMPP, but it's far from being perfect. Join #smack (freenode) and discuss with us how Smack could be improved.

Furthermore we are proud to announce the availability of Smack 4.1.0-rc3, which should fix the last outstanding issues with Stream Management (XEP-198).

Also the first alpha version of Smack 4.2 has been released. Smack 4.2.0-alpha1 is basically Smack 4.1.0-rc3 with two major modifications that introduce the first big API changes in Smack 4.2:

Smack is now interruptible, which means that most methods throw a InterruptedException. This allows users to cancel (long-running) blocking I/O operations by just interrupting the thread performing those actions.

Smack uses now the Jid type (from jxmpp-jid) everywhere a Jid is expected. This prevents programming and users errors caused by an invalid JID String, since JIDs have pretty strict requirements regarding their String representation. Also jxmpp-jid does cache the result of the expensive String operations required to perform on JID Strings, which results in increased performance.

It was found that the passed "hostname" argument to the configured HostnameVerifier in Smack 4.0 was server controllable, which could allow a malicious attacker to circumvention hostname verification. Hostname verification is disabled by default in Smack 4.0, but enabled by default in Smack 4.1. The faulty code was long ago removed in the Smack 4.1 branch, so most Smack 4.1 (pre-)releases are not affected.

The Ignite Realtime community is happy to announce the first release candidate of the upcoming Smack version 4.1. Smack is an open source XMPP client library written in Java with multi-runtime support. It can be used with Java SE and Android runtimes. If you haven't done already now is the ideal time to grab Smack 4.1.0-rc1 and try it out. A '4.1' branch has been created, that will track the further development of Smack 4.1. The API of Smack 4.1 is now officially stable and will not change in an incompatible way between further 4.1 releases.

I'd like to thank everyone at FOSDEM 2015 and XMPP Summit for such a nice time and interesting talks. I sure haven't talk to all people at the XMPP Summit, but hope that we'll meet again soon. You can find my slides of my lightning talk "XMPP and Android" at http://geekplace.eu/files/xmpp_and_android.pdf

While travelling home from Brussels in the ICE, I was able to prepare and upload beta2 of Smack 4.1. Please update your build setups and report any issues in the forum.