zerodds-java-omgdds
- Source: crates/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 auditdocs/spec-coverage/zerodds-java-omgdds-1.0.md— pure-Java path audit (incl. the gRPC multi-JVM bridge)
zerodds-java-omgdds
- Quelle: crates/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-Auditdocs/spec-coverage/zerodds-java-omgdds-1.0.md— Pure-Java-Pfad-Audit (inkl. gRPC-Multi-JVM-Bridge)