zerodds-java-omgdds

Native Java DDS-PSM (org.omg.dds.*) — implements the OMG DDS Java PSM 1.0, the spec-defined Java API form. Part of ZeroDDS. Safety class STANDARD.

OMG DDS-Java-PSM 1.0 spec audit (K15) completed 2026-04-28: 156 done / 0 partial / 0 open / 15 n/a. Fully spec-conformant.


Pure Java — no JNI

zerodds-java-omgdds is a pure-Java implementation of the OMG DDS-Java-PSM (org.omg.dds.*): no JNI, no native library, no dependency on the Rust runtime. It carries its own in-JVM machinery:

  • org.zerodds.internal.InProcessBus — single-JVM pub/sub.
  • org.zerodds.internal.Xcdr2Codec — the XTypes 1.3 §7.4 XCDR2 wire form, implemented in Java.

For multi-JVM / cross-process, a pure-Java h2c gRPC client (org.zerodds.bridge.GrpcBridgeClient — raw HTTP/2 + HPACK + protobuf, no grpc-java) talks to the zerodds-grpc-bridged daemon; still no JNI. The crate is a drop-in for applications running today on the RTI Connext, OpenSplice or Cyclone DDS Java API.

Build

# Maven build (standard Java):
mvn -f crates/java-omgdds/pom.xml package

# the JAR lands in:
ls crates/java-omgdds/target/zerodds-java-omgdds-0.0.0.jar

Quickstart (OMG PSM form)

import org.omg.dds.core.*;
import org.omg.dds.domain.*;
import org.omg.dds.pub.*;
import org.omg.dds.topic.*;

DomainParticipantFactory factory = DomainParticipantFactory.getInstance();
DomainParticipant dp = factory.createParticipant(0);

Topic<Pose> topic = dp.createTopic("Telemetry", Pose.class);
Publisher pub = dp.createPublisher();
DataWriter<Pose> writer = pub.createDataWriter(topic);

writer.write(new Pose("r1", 1.0, 2.0, 3.0));

▶ Runnable example: java-omgpsm-pose

Pose is generated via zerodds-idlc Robot.idl --java.

Structure

crates/java-omgdds/
├── Cargo.toml          workspace member (build container for the Java module)
├── src/lib.rs          architecture doc (pure-Java, no JNI)
├── java/src/main/java/ Java sources (Maven layout)
│   ├── org/omg/dds/     normative OMG PSM API
│   │   ├── core/        Time, Duration, Status, Exception, Listener
│   │   ├── core/policy/ all 21 QoS policies, immutable builders
│   │   ├── domain/      DomainParticipantFactory, DomainParticipant
│   │   ├── topic/       Topic, ContentFilteredTopic, MultiTopic
│   │   ├── pub/         Publisher, DataWriter, PublisherListener
│   │   ├── sub/         Subscriber, DataReader, Sample, SampleSelector
│   │   └── type/        TypeSupport, dynamic, builtin
│   └── org/zerodds/      implementation detail (pure Java)
│       ├── internal/    InProcessBus, Xcdr2Codec
│       └── bridge/      GrpcBridgeClient (multi-JVM, h2c)
└── java/pom.xml        Maven build

Documentation Trail

For the user guide see Documentation Trail Station 05 → Java.

Spec references

  • OMG DDS Java PSM 1.0
  • OMG DDS 1.4 §2.2 — DCPS
  • docs/spec-coverage/dds-java-psm-1.0.md — OMG PSM per-section audit
  • docs/spec-coverage/zerodds-java-omgdds-1.0.md — pure-Java path audit (incl. the gRPC multi-JVM bridge)

zerodds-java-omgdds

Native Java DDS-PSM (org.omg.dds.*) — implementiert das OMG DDS Java PSM 1.0, die spec-definierte Java-API-Form. Teil von ZeroDDS. Safety-Klasse STANDARD.

OMG-DDS-Java-PSM 1.0 Spec-Audit (K15) abgeschlossen 2026-04-28: 156 done / 0 partial / 0 open / 15 n/a. Voll spec-konform.


Pure Java — kein JNI

zerodds-java-omgdds ist eine reine Java-Implementierung des OMG-DDS-Java-PSM (org.omg.dds.*): kein JNI, keine native Library, keine Abhängigkeit von der Rust-Runtime. Sie bringt ihre eigene In-JVM-Maschinerie mit:

  • org.zerodds.internal.InProcessBus — Single-JVM-Pub/Sub.
  • org.zerodds.internal.Xcdr2Codec — die XTypes-1.3-§7.4-XCDR2-Wire-Form, in Java implementiert.

Für Multi-JVM / Cross-Process spricht ein reiner Java-h2c-gRPC-Client (org.zerodds.bridge.GrpcBridgeClient — raw HTTP/2 + HPACK + protobuf, kein grpc-java) mit dem zerodds-grpc-bridged-Daemon; weiterhin kein JNI. Die Crate ist ein Drop-in für Anwendungen, die heute auf RTI Connext, OpenSplice oder Cyclone DDS Java-API laufen.

Build

# Maven-Build (Standard-Java):
mvn -f crates/java-omgdds/pom.xml package

# JAR landet in:
ls crates/java-omgdds/target/zerodds-java-omgdds-0.0.0.jar

Quickstart (OMG-PSM-Form)

import org.omg.dds.core.*;
import org.omg.dds.domain.*;
import org.omg.dds.pub.*;
import org.omg.dds.topic.*;

DomainParticipantFactory factory = DomainParticipantFactory.getInstance();
DomainParticipant dp = factory.createParticipant(0);

Topic<Pose> topic = dp.createTopic("Telemetry", Pose.class);
Publisher pub = dp.createPublisher();
DataWriter<Pose> writer = pub.createDataWriter(topic);

writer.write(new Pose("r1", 1.0, 2.0, 3.0));

▶ Runnable example: java-omgpsm-pose

Pose ist generiert via zerodds-idlc Robot.idl --java.

Struktur

crates/java-omgdds/
├── Cargo.toml          Workspace-Member (Build-Container für das Java-Modul)
├── src/lib.rs          Architektur-Doc (pure-Java, kein JNI)
├── java/src/main/java/ Java-Sources (Maven-Layout)
│   ├── org/omg/dds/     normative OMG-PSM-API
│   │   ├── core/        Time, Duration, Status, Exception, Listener
│   │   ├── core/policy/ alle 21 QoS-Policies, immutable Builder
│   │   ├── domain/      DomainParticipantFactory, DomainParticipant
│   │   ├── topic/       Topic, ContentFilteredTopic, MultiTopic
│   │   ├── pub/         Publisher, DataWriter, PublisherListener
│   │   ├── sub/         Subscriber, DataReader, Sample, SampleSelector
│   │   └── type/        TypeSupport, dynamic, builtin
│   └── org/zerodds/      Implementierungs-Detail (pure Java)
│       ├── internal/    InProcessBus, Xcdr2Codec
│       └── bridge/      GrpcBridgeClient (Multi-JVM, h2c)
└── java/pom.xml        Maven Build

Documentation Trail

Fuer den User-Guide siehe Documentation Trail Station 05 → Java.

Spec-Referenzen

  • OMG DDS Java PSM 1.0
  • OMG DDS 1.4 §2.2 — DCPS
  • docs/spec-coverage/dds-java-psm-1.0.md — OMG-PSM-Per-Section-Audit
  • docs/spec-coverage/zerodds-java-omgdds-1.0.md — Pure-Java-Pfad-Audit (inkl. gRPC-Multi-JVM-Bridge)