Java Messaging Services (JMS)
JMS stands for Java Messaging Service. JMS is a specification that describes a common way for Java programs to create, send, receive and read "distributed enterprise messages".
Enterprise Messaging:-
Enterprise messaging is a method for transmitting data from one enterprise application to another. Its main advantage is that enterprise messaging eliminates the need to synchronize applications from multiple vendors running on different platforms.
The Java message service is a MOM (Message Oriented Middle-ware) and thus allows to decouple producers and consumers of messages.
The programmers need not to rewrite a whole application to implement JMS and will not have any dependency to a particular software vendor. So JMS will be vendor neutral.
JMS API: JMS API communication is loosely coupled communication.
JMS API
- defines a vendor independent access to various MOM systems.
- is a part of the J2EE platform.
- is defined with the javax.jms package.
JMS API is not only loosely coupled, asynchronous messaging and reliable delivery.
• Asynchronous:
A JMS provider can deliver messages to a client as they arrive;
a client does not have to request messages in order to receive them.
• Reliable:
The JMS API can ensure that a message is delivered once and only
once.
Enterprise Messaging:-
Enterprise messaging is a method for transmitting data from one enterprise application to another. Its main advantage is that enterprise messaging eliminates the need to synchronize applications from multiple vendors running on different platforms.
The Java message service is a MOM (Message Oriented Middle-ware) and thus allows to decouple producers and consumers of messages.
The programmers need not to rewrite a whole application to implement JMS and will not have any dependency to a particular software vendor. So JMS will be vendor neutral.
JMS API: JMS API communication is loosely coupled communication.
JMS API
- defines a vendor independent access to various MOM systems.
- is a part of the J2EE platform.
- is defined with the javax.jms package.
JMS API is not only loosely coupled, asynchronous messaging and reliable delivery.
• Asynchronous:
A JMS provider can deliver messages to a client as they arrive;
a client does not have to request messages in order to receive them.
• Reliable:
The JMS API can ensure that a message is delivered once and only
once.
JMS API Architecture

• A JMS provider is a messaging system that implements the JMS interfaces and provides administrative and control features.
• JMS clients are the programs or components, written in the Java programming language, that produce and consume messages.
• Messages are the objects that communicate information between JMS clients.
• Administered objects are preconfigured JMS objects created by an administrator for the use of clients. The two kinds of administered objects are destinations and connection factories (Topic or Queue).
• Native clients are programs that use a messaging product’s native client API instead of the JMS API. An application first created before the JMS API became available and subsequently modified is likely to include both JMS and native clients.
• JMS clients are the programs or components, written in the Java programming language, that produce and consume messages.
• Messages are the objects that communicate information between JMS clients.
• Administered objects are preconfigured JMS objects created by an administrator for the use of clients. The two kinds of administered objects are destinations and connection factories (Topic or Queue).
• Native clients are programs that use a messaging product’s native client API instead of the JMS API. An application first created before the JMS API became available and subsequently modified is likely to include both JMS and native clients.