This document provides an overview of Java Message Service (JMS) and how to use it. JMS allows applications to asynchronously and reliably send and receive messages. It uses Java Naming and Directory Interface (JNDI) to lookup connection information instead of hardcoding addresses. Sample code demonstrates how to publish messages to a topic and subscribe to receive them. JMS provides loose coupling between applications and supports point-to-point and publish-subscribe messaging models.