Overview of the JMS API
This overview defines the concept of messaging, describes the JMS API and where it can be used, and explains how the JMS API works within the Java EE platform.
The following topics are addressed here:
What Is Messaging?
Messaging is a method of communication between software components or applications. A messaging system is a peer-to-peer facility: A messaging client can send messages to, and receive messages from, any other client. Each client connects to a messaging agent that provides facilities for creating, sending, receiving, and reading messages.
Messaging enables distributed communication that is loosely coupled. A component sends a message to a destination, and the recipient can retrieve the message from the destination. What makes the communication loosely coupled is that the destination is all that the sender and receiver have in common. The sender and the receiver do not have to be available at the same time in order to communicate. In fact, the sender does not need to know anything about the receiver; nor does the receiver need to know anything about the sender. The sender and the receiver need to know only which message format and which destination to use. In this respect, messaging differs from tightly coupled technologies, such as Remote Method Invocation (RMI), which require an application to know a remote application’s methods.
Messaging also differs from electronic mail (email), which is a method of communication between people or between software applications and people. Messaging is used for communication between software applications or software components.
What Is the JMS API?
The Java Message Service is a Java API that allows applications to create, send, receive, and read messages. The JMS API defines a common set of interfaces and associated semantics that allow programs written in the Java programming language to communicate with other messaging implementations.
The JMS API minimizes the set of concepts a programmer must learn in order to use messaging products but provides enough features to support sophisticated messaging applications. It also strives to maximize the portability of JMS applications across JMS providers.
JMS enables communication that is not only loosely coupled but also
The current version of the JMS specification is Version 2.0. You can
download a copy of the specification from the Java Community Process
When Can You Use the JMS API?
An enterprise application provider is likely to choose a messaging API over a tightly coupled API, such as a remote procedure call (RPC), under the following circumstances.
For example, components of an enterprise application for an automobile manufacturer can use the JMS API in situations like the following.
Using messaging for these tasks allows the various components to interact with one another efficiently, without tying up network or other resources. Figure 48-1 illustrates how this simple example might work.
Figure 48-1 Messaging in an Enterprise Application
Manufacturing is only one example of how an enterprise can use the JMS API. Retail applications, financial services applications, health services applications, and many others can make use of messaging.
How Does the JMS API Work with the Java EE Platform?
When the JMS API was first introduced, its most important purpose was to allow Java applications to access existing messaging-oriented middleware (MOM) systems. Since that time, many vendors have adopted and implemented the JMS API, so a JMS product can now provide a complete messaging capability for an enterprise.
The JMS API is an integral part of the Java EE platform, and application developers can use messaging with Java EE components. JMS 2.0 is part of the Java EE 8 release.
The JMS API in the Java EE platform has the following features.
The JMS API enhances the other parts of the Java EE platform by simplifying enterprise development, allowing loosely coupled, reliable, asynchronous interactions among Java EE components and legacy systems capable of messaging. A developer can easily add new behavior to a Java EE application that has existing business events by adding a new message-driven bean to operate on specific business events. The Java EE platform, moreover, enhances the JMS API by providing support for JTA transactions and allowing for the concurrent consumption of messages. For more information, see the Enterprise JavaBeans specification, v3.2.
The JMS provider can be integrated with the application server using the Java EE Connector architecture. You access the JMS provider through a resource adapter. This capability allows vendors to create JMS providers that can be plugged in to multiple application servers, and it allows application servers to support multiple JMS providers. For more information, see the Java EE Connector architecture specification, v1.7.