Good XMPP Java Libraries for server side? [closed]
Solution 1:
http://xmpp.org/xmpp-software/libraries/ has a list of software libraries for XMPP. Here is an outdated snapshot of it:
ActionScript
- as3xmpp
C
- iksemel
- libstrophe
- Loudmouth
C++
- gloox
- Iris
- oajabber
C# / .NET / Mono
- agsXMPP SDK
- jabber-net
Erlang
- Jabberlang
Flash
- XIFF
Haskell
- hsxmpp
Java
- Echomine Feridian
- Jabber Stream Objects (JSO)
- Smack
JavaScript
- strophe.js
- xmpp4js
Lisp
- cl-xmpp
Objective-C
- xmppframework
Perl
- AnyEvent::XMPP
PHP
- Lightr
- xmpphp
Python
- jabber.py
- pyxmpp
- SleekXMPP
- Twisted Words
- xmpp-psn
- xmpppy
Ruby
- XMPP4R
Tcl
- JabberLib
Solution 2:
I went through the same search. I first tried Smack and then realized it's targeted at c2s (client to server) and didn't have what I need. I looked at Tinder but didn't like the licensing model (also when I looked it was much more raw). I finally looked at Whack and realized it was what I needed - but it's missing a lot (that's why Tinder came about I think).
So..my solution? Forked Whack, added some code to abstract out things, and try to make it easier to use: http://github.com/Communitivity/Adirondack
I wrote a Scala library based on that to help create external component based agents, see http://github.com/Communitivity/Shellack and http://github.com/Communitivity/MinimalScalaXMPPComponent
One of my main goals was to make it easy to write a component quickly. An example of such a component is below:
object Main {
/**
* @param args the command line arguments
*/
def main(args: Array[String]) :Unit = {
new XMPPComponent(
new ComponentConfig() {
def secret() : String = { "secret.goes.here" }
def server() : String = { "communitivity.com" }
def subdomain() : String = { "weather" }
def name() : String = { "US Weather" }
def description() : String = { "Weather component that also supported SPARQL/XMPP" }
},
actor {
loop {
react {
case (pkt:Packet, out : Actor) =>
Console.println("Received packet...\n"+pkt.toXML)
pkt match {
case message:Message =>
val reply = new Message()
reply.setTo(message.getFrom())
reply.setFrom(message.getTo())
reply.setType(message.getType())
reply.setThread(message.getThread())
reply.setBody("Received '"+message.getBody()+"', tyvm")
out ! reply
case _ =>
Console.println("Received something other than Message")
}
case _ =>
Console.println("Received something other than (Packet, actor)")
}
}
}
).start
}
}
Solution 3:
Ignite Realtime shares its Tinder API which is a basic building block extracted from OpenFire just for the creation of server-side components and possibly other servers. It implements basic XMPP building blocks and you are free to start from there.
Solution 4:
Also from Ignite Realtime is the Whack API which is specifically for building XMPP components
Whack is an Open Source XMPP (Jabber) component library for XMPP components. A pure Java library, it can be embedded into your applications to create anything from a full XMPP component to simple XMPP integrations such as sending intercepting and acting on certain messages.