Overview

Smack is a library for client-to-server XMPP connections to perform real-time communications and data exchange. This includes, but is not limited to, instant messaging and group chat. More genericly speaking, it allows you to easily exchange data in various ways: For example fire-and-forget, publish-subscribe, between human and non-human endpoints. The use cases include M2M, IoT, and many more.

Smack is a pure Java library, open-source and highly modular. It runs on Android and Java SE. The API strives to be easy to use but yet powerful.

Key Advantages

Smack is extremely simple to use. Sending a text message to a user can be accomplished in only a few lines of code.
AbstractXMPPConnection connection = new XMPPTCPConnection("mtucker", "password", "jabber.org");
connection.connect().login();

Message message = new Message("jsmith@igniterealtime.org", "Howdy! How are you?");
connection.sendStanza(message);
  

Smack doesn't force you to code at the protcol level of XMPP. The library provides intelligent higher level constructs, often called {@link org.jivesoftware.smack.Manager}, which let you program more efficiently. Other examples of those constructs are the Chat and Roster classes.

Smack comes with APIs for easy machine-to-machine communication. You can set any number of properties on each message, including properties that are Java objects.

Smack is open-source under the Apache License 2.0, which means you can incorporate Smack into your commercial or non-commercial applications.

About XMPP

XMPP (eXtensible Messaging and Presence Protocol) is an open protocol standardized by the Internet Engineering Task Force (IETF) and supported and extended by the XMPP Standards Foundation (XSF).