Original article is here.
But before diving into the server setup and programming issues, below two articles might be helpful to give you an idea on what XMPP is:
Instant messaging (IM) is nowadays one of the most used ways of communication and collaboration. In the next few articles I will be discussing how to create an infrastructure for instant messaging (IM) in your network.
Below articles will show you how to install and configure an IM server, as well as how to use a XMPP library in Java in order to add instant messaging capabilities to your own application using Smack library.