A peer-to-peer messaging system for java programs to send and receive messages. A JMS application is capable of sending or receiving application defined messages (asynchronous requests, reports, or events) to other JMS applications so that these separate applications can collaborate or coordinate their efforts.