IBM MQ classes for JMS

IBM MQ classes for JMS is the JMS provider that is supplied with IBM MQ. IBM MQ classes for JMS implements the interfaces defined in the javax.jms package, and also provides two sets of extensions to the JMS API. Both Java Platform, Standard Edition ( Java SE) and Java Platform, Enterprise Edition ( Java EE) applications can use IBM MQ classes for JMS.

The JMS specification defines a set of interfaces that applications can use to perform messaging operations. From Version 8.0, IBM MQ 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 model and the JMS 2.0 specification at Java.net.

The javax.jms package specifies the details of the JMS interfaces, and a JMS provider implements these interfaces for a specific messaging product. 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.jms interface 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 we requirements.


IBM MQ JMS extensions

IBM MQ classes for JMS also provides extensions to the JMS API. Previous releases of IBM MQ classes for JMS contain 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. IBM MQ classes for JMS maintains these extensions, and we can continue to use, without change, any applications that use these extensions. These extensions are known as the IBM MQ JMS extensions. Note that, in this set of 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. These extensions are known as 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.

  • JMS model
    The JMS model defines a set of interfaces that Java applications can use to perform messaging operations. IBM MQ classes for JMS, as a JMS provider, defines how JMS objects are related to IBM MQ concepts. The JMS specification expects certain JMS objects to be administered objects.
  • IBM MQ classes for JMS architecture
    IBM MQ classes for JMS has a layered architecture. The topmost layer of code is a common layer that any IBM JMS provider can use.
  • Support for administered objects
    IBM MQ classes for JMS supports the use of administered objects.
  • Supported communication types on Java EE platforms
    On the Java EE platform, IBM MQ classes for JMS supports two types of communication between a component of an application and an IBM MQ queue manager.
  • Relationship with IBM MQ classes for Java
    Since IBM WebSphere MQ Version 7.0, IBM WebSphere MQ classes for JMS and IBM WebSphere MQ classes for Java are implemented as peers. This implementation is different from earlier releases where the implementation of IBM WebSphere MQ classes for JMS depended on IBM WebSphere MQ classes for Java.

Parent topic: IBM MQ Java language interfaces