DDS and JMS

The Java Message Service (JMS) API is a Java Message Oriented Middleware (MOM) API for sending messages between two or more clients. JMS has been designed to address applications requiring fast and reliable business transactions. JMS is part of the Java Platform, Enterprise Edition (Java EE), and is defined by a specification developed under the Java Community Process as JSR 914.

Messaging Protocol Technologies Internet of Things

JMS is a messaging standard that allows application components based on Java EE to create, send, receive and read messages.  It allows communication between different components of a distributed application to be loosely coupled, reliable, and asynchronous.  JMS supports both point-to-point and publish-subscribe style routing.

The main limitation of JMS is that it is a Java API standard only and does not define a wire protocol.  Therefore JMS implementations from different vendors will not interoperate.

JMS is focused on Java-centric systems although there are a number of vendors who have developed proprietary C and C++ JMS API mappings that can be used with a JMS broker.  As an API standard, JMS cannot guarantee interoperability between producers and consumers using different JMS applications.

The Object Management Group's (OMG) Data Distribution Service for Real-Time Systems (DDS) is an open middleware standard that enables scalable, real-time, dependable, high performance and interoperable data exchanges between publishers and subscribers.  It is based on a proven data-centric paradigm that emerged from Defense and Aerospace but which is now being rapidly adopted in sectors as diverse as Power Generation, large scale SCADA, Air Traffic Control and Management, Smart Cities, Smart Grids, Vehicles, Medical Devices, Modeling and Simulation, and Financial Trading.

DDS makes data a first class citizen in the system thanks to its extensive support for keys, lifecycle management etc.  DDS is brokerless and provides the abstraction of a virtual Global Data Space, a ubiquitous, universal and fully distributed data cache.

DDS is both language and operating system independent.  The Data Centric Publish Subscribe (DCPS) APIs have been implemented in a range of different programming languages including Ada, C, C++, C#, Java, Scala, Lua, and Ruby.  Using standardized APIs helps ensure that DDS applications can be ported easily between different vendor’s implementations.

The DDS standard also specifies a wire protocol, the DDS Interoperability Wire Protocol, referred to as DDSI.  A wire protocol is needed if more than one application has to interoperate i.e. transmitting data from point-to-point.  DDS implementations complying with DDSI will interoperate as regularly demonstrated at OMG Technical Meetings.

A key component of the Vortex DDS product suite is Vortex OpenSplice, the leading (open source and commercial) implementation of the DDS standard.