OpenDDS
OpenDDS is an open-source C++ implementation of the Object Management Group's specification "Data Distribution Service for Real-time Systems" (DDS), as well as some other related specifications. These standards define a set of interfaces and protocols for developing distributed applications based on the publish-subscribe and distributed cache models. Although OpenDDS is itself developed in C++, Java and JMS bindings are provided so that Java applications can use OpenDDS. OpenDDS also includes support for the DDS Security specification.
OpenDDS is built on the ACE abstraction layer to provide platform portability. OpenDDS also leverages capabilities of TAO, such as its IDL compiler and as the basis of the OpenDDS DCPS Information Repository (DCPSInfoRepo).
The primary development of OpenDDS was done by
Object Computing, Incorporated in
St. Louis and Phoenix. It is released under generous license
terms similar to ACE, TAO and MPC. See the LICENSE
file for
details.
Table of Contents:
- Documentation
- Support
- Features
- Dependencies
- Supported Platforms
- Building and Installing
- Quick Start with Docker
Documentation
-
The OpenDDS Developer's Guide is freely downloadable at: http://download.objectcomputing.com/OpenDDS/
-
The TAO Developer's Guide book set may also be purchased from https://objectcomputing.com/products/tao/tao-developers-guide
-
A Doxygen for the latest release is available at http://download.opendds.org/doxygen/.
-
For developers wanting to contribute to OpenDDS, please take the time to read the developer's guidelines.
Other documentation can be found in docs
directory.
Support
If you encounter any problems with this release please fill out the PROBLEM-REPORT-FORM file found in this directory and use it when posting to the mailing list or creating a GitHub Issue.
For commercial support please see http://opendds.org/support.html.
Features
This release of OpenDDS is based on the DDS Specification formal/2015-04-10 (version 1.4). It features the following transport protocols:
- TCP/IP
- UDP/IP
- IP multicast
- RTPS over UDP/IP (unicast and multicast)
RTPS (Interoperability) features are based on the DDS-RTPS Specification formal/2014-09-01 (version 2.2). See the OpenDDS Developer's Guide and the file docs/design/RTPS for more details on RTPS.
See the Developer's Guide for information on OpenDDS compliance with the DDS specification. If you would like to contribute a feature or sponsor the developers to add a feature please see the Support section above for contact information.
Dependencies
For a complete detailed list of dependencies, see
docs/dependencies.md
.
ACE/TAO
OpenDDS requires TAO for both IDL compilation as well as interaction with the
DCPSInfoRepo. ACE is also required, but it is always included with TAO. If you
will be using the configure
script for OpenDDS (see the
INSTALL.md
file for details), you do not need to download TAO
first -- the configure
script will download it for you.
There are two distributions of ACE/TAO that can be used with OpenDDS:
- OCI ACE/TAO 2.2a patch 16
- This will be automatically downloaded by default when using the configure script.
- Can be manually downloaded from:
- DOC Group ACE 6.5.5 / TAO 2.5.5
- When using the configure script, DOG Group ACE/TAO can be downloaded using
one of these arguments:
--doc-group
for the latest release--ace-github-latest
to use the master branch of ACE/TAO as is. This also downloads the master branch of MPC as is.
- Can be manually downloaded from:
- When using the configure script, DOG Group ACE/TAO can be downloaded using
one of these arguments:
Perl
Perl is used for the configure script, running the automated tests and examples included in this source tree, and generating Makefiles or Visual Studio project files.
On Windows we recommend the use of ActiveState Perl.
Optional Dependencies
- Google Test, for various tests.
- Starting with OpenDDS 3.14, Google Test is required for OpenDDS tests.
Tests are built by default, so that means Google Test is required unless
--no-tests
is passed toconfigure
.
- Starting with OpenDDS 3.14, Google Test is required for OpenDDS tests.
Tests are built by default, so that means Google Test is required unless
- CMake, for building Google Test and the OpenDDS CMake module.
- Java, for Java bindings.
- Qt, for Monitor application and ishapes demo.
- Wireshark, for the OpenDDS DCPS Wireshark dissector.
- RapidJSON, for optional dissector sample dissection support and JSON typesupport.
- Xerces, for XML QOS and DDS Security.
- OpenSSL, for DDS Security.
Supported Platforms
Operating Systems
This release of OpenDDS has been tested under the following platforms:
Linux family:
- Red Hat EL and CentOS 6.6 and 6.9, x86_64
- Red Hat EL and CentOS 7.2 and 7.3, x86_64
- Fedora 24 and 29, x86_64
- Debian 9.4, i686
- Ubuntu 16.04 LTS, x86_64
- openSUSE 42.1, and 42.2, x86_64
- Docker
Windows family:
- Windows 7 (32-bit, 64-bit)
- Windows Server 2012 R2 (64-bit)
- Windows 10 (64-bit)
Others:
- macOS 10.13 (High Sierra)
Embedded/Mobile/IoT:
- LynxOS-178 (OpenDDS Safety Profile)
- VxWorks 6.9 and 7 (see below)
- Linux on Raspberry Pi
- Android 9.0 "Pie" (API Level 28)
We have built OpenDDS for VxWorks 6.9 and 7 and have run basic system and performance tests (but not the entire regression test suite). Please contact sales@objectcomputing.com or opendds-main@lists.sourceforge.net for more information on support for ACE, TAO, and OpenDDS on VxWorks. OCI's packages for ACE, TAO, and OpenDDS can be obtained on the Wind River Marketplace.
Compilers
This release of OpenDDS has been tested using the following compilers:
- Microsoft Visual C++ 9 with SP1 (Visual Studio 2008)
- Microsoft Visual C++ 10 with SP1 (Visual Studio 2010)
- Microsoft Visual C++ 11 (Visual Studio 2012) - Update 4
- Microsoft Visual C++ 12 (Visual Studio 2013) - Update 5
- Microsoft Visual C++ 14 (Visual Studio 2015) - Update 3
- Microsoft Visual C++ 14.1 (Visual Studio 2017) cl 19.12.25835
- gcc 4.4.7, 4.8, 4.9
- gcc 5.4
- gcc 6.2, 6.3
- gcc 7.2
- gcc 8.1, 8.2
- Clang 6.0 (llvm.org) and 9.0 (Apple)
Building and Installing
For building and installation instructions
see the INSTALL.md
file in this directory.
Quick Start with Docker
See docs/docker.md
for how to use the pre-built docker
image.