IBM MQ classes for JMS/Jakarta Messaging

IBM® MQ classes for JMS and IBM MQ classes for Jakarta Messaging are the messaging providers that are supplied with IBM MQ. Each of these providers also provides two sets of extensions to the messaging API. Both Java Platform, Standard Edition ( Java SE) and Java Platform, Enterprise Edition ( Java EE) applications can use these messaging providers.

[MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022][Jakarta Messaging 3.0]IBM MQ 9.3.0 introduces support for Jakarta Messaging 3.0. JMS 2.0 is still fully supported.

The JMS and Jakarta Messaging specifications define a set of interfaces that applications can use to perform messaging operations. From IBM MQ 8.0, the product supports the JMS 2.0 version of the JMS standard. This implementation offers all the features of the classic API but requires fewer interfaces and is simpler to use. For more information, see JMS and Jakarta Messaging model and the JMS 2.0 specification at Java.net. [Jakarta Messaging 3.0]From IBM MQ 9.3.0, Jakarta Messaging is also supported.

The jakarta.jms (Jakarta Messaging 3.0) or javax.jms (JMS 2.0) package specifies the details of the messaging interfaces, and a messaging provider implements these interfaces for a specific messaging product. For example:
  • IBM MQ classes for JMS is a JMS provider that implements the JMS interfaces for IBM MQ and also provides the following two sets of extensions to the JMS API:
    • IBM MQ JMS extensions
    • IBM JMS extensions
  • A connection factory, queue, or topic object created using the javax.dims, or jakarta.jms, interfaces or either set of JMS extensions can be addressed using any of these APIs; that is, it can be cast to any of the interfaces. To maintain application portability at the highest level, use the most generic API that is suitable for your requirements.

Because JMS and Jakarta Messaging share much in common, further references to JMS in this topic can be taken as referring to both. Any differences are highlighted as necessary.

IBM MQ JMS extensions

IBM MQ classes for JMS also provides extensions to the JMS API. IBM MQ classes for JMS contains extensions that are implemented in MQConnectionFactory, MQQueue, and MQTopic objects. These objects have properties and methods that are specific to IBM MQ. The objects can be administered objects, or an application can create the objects dynamically at run time. These extensions are termed the IBM MQ JMS extensions. Note that, in this documentation, objects that are created dynamically by an application at run time are not considered to be administered objects.

IBM JMS extensions

In addition to the IBM MQ JMS extensions, IBM MQ classes for JMS provides a more generic set of extensions to the JMS API or Java as the programming language used. These extensions are termed the IBM JMS extensions, and have the following broad objectives:
  • To provide a greater level of consistency across IBM JMS providers.
  • To make it easier to write a bridge application between two IBM messaging systems.
  • To make it easier to port an application from one IBM JMS provider to another.
The main focus of these extensions concerns creating and configuring connection factories and destinations dynamically at run time, but the extensions also provide function that is not directly related to messaging, such as function for problem determination.