Q:

JMS and HornetQ

JMS is the java messaging "API", still not clear for me what the third party API like HornetQ really does? isn't there any default/reference implementation?

A:

JMS is just a specification, you can choose any implementation you like:

HornetQ
ActiveMQ
RedHat MRG
IBM MQ
Oracle MQ
... etc, etc... etc

Each one will offer different features additionally to the specification.
For instance HornetQ offers confirmation acknowledgement (so you don't need to block on sends waiting for confirmation and can use advanced techniques for asynchronous operations like asynchronous servlets).
HornetQ also offers large messages.
and HornetQ offers a core API as well where you can go without JMS.
I know for instance that you can also use IBM's API if you don't want to use JMS.
So, in Summary Java Message Service - JMS is just a set of java interfaces and you have to choose the proper implementation.

