JMS stands for Java Message Service, which is an API (application programming interface) that provides the facility to create, send, and read messages. It is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. JMS provides generic messaging models that can be used to facilitate the sending and receiving of messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
JMS is designed to make it easy to develop business applications that asynchronously send and receive business data and events. It provides a common way for Java applications to access enterprise messaging systems. JMS is a mandatory API and service in J2EE platform.
JMS defines a set of interfaces and semantics that allow Java applications to communicate with other messaging implementations. A JMS implementation is known as a JMS provider. JMS makes the learning curve easy by minimizing the set of concepts a Java developer must learn to use enterprise messaging products, and at the same time it maximizes the portability of messaging applications.
JMS can be roughly divided into two areas of functionality, namely the production and consumption of messages. The JmsTemplate class is used for message production and synchronous message reception. For asynchronous reception similar to Java EEs message-driven bean style, Spring provides a number of message listener containers that are used to create Message-Driven POJOs (MDPs).
In summary, JMS is an API that provides a way for Java applications to communicate with other messaging implementations. It enables distributed communication that is loosely coupled, reliable, and asynchronous. JMS is a mandatory API and service in J2EE platform.