JMS (Java Message Service), now standardized as Jakarta Messaging, is the Java API for enterprise messaging that lets applications create, send, receive, and read messages through message-oriented middleware using a common, broker-neutral interface.
JMS
JMS (Java Message Service) — now maintained as Jakarta Messaging — is the standard Java API for enterprise messaging. It defines a common, broker-neutral interface for creating, sending, receiving, and reading messages, so a Java application can talk to message-oriented middleware without binding to any single vendor’s client. Swap the provider and the same producer and consumer code keeps working.
- Two messaging models - Point-to-point queues and publish/subscribe topics cover both work-distribution and broadcast patterns.
- Provider independence - The API is defined once; ActiveMQ, IBM MQ, and other brokers supply the implementation.
- Message types and headers - Text, bytes, map, object, and stream messages carry standardized headers and properties for routing and filtering.
- Asynchronous, reliable delivery - Acknowledgement modes, durable subscriptions, and transactions support decoupled, guaranteed messaging.
In API operations, JMS is the event and messaging backbone inside many Java-centric enterprises — the asynchronous counterpart to synchronous request/response APIs. It moves work between services, buffers spikes, and decouples producers from consumers behind the scenes. As teams describe these event-driven flows for a broader, polyglot, and increasingly agentic audience, the JMS layer is often documented and governed through AsyncAPI, which gives message-driven interfaces the same kind of machine-readable contract that OpenAPI gives HTTP APIs.