Cassini is the Jakarta REST 4.0 implementation of the Vidocq ecosystem. It runs on top of Chappe for HTTP transport, on Vauban for CDI resolution, and on Champollion for JSON serialization. Goal: 100 % TCK conformance on the Core Profile / SE-Bootstrap target, no ad-hoc reflection, no unjustified external dependency.

Origin of the name

Giovanni Domenico Cassini, known in French as Jean-Dominique Cassini (1625–1712), Italian-French astronomer, first director of the Paris Observatory (1671). He founded the dynasty that produced the first complete map of France via geodetic triangulation — every point of the kingdom anchored to a hierarchical mesh of triangles, then to roads, then to named places.

Reference: Cassini on Wikipedia.

Cassini, the astronomer

Cassini, the runtime

Geodetic triangulation

URI templates @Path("/a/{b}/c")

Hierarchical mesh kingdom → province → town

Root resource → sub-resource locator → method

Reference meridian

UriInfo.getBaseUri()

Single point per 3 angles

Best-match: single method per (path, verb, media-type)

The REST resource tree is a map. Cassini is the runtime that draws it and routes every request — over the signaling lines laid down by the optical telegraph of Chappe.

At a glance

Implemented spec

https://jakarta.ee/specifications/restful-ws/4.0/

Repo

https://codeberg.org/Vidocq/cassini

Java

25 (LTS)

JPMS modules

io.vidocq.cassini.api, io.vidocq.cassini.core, io.vidocq.cassini.client, io.vidocq.cassini.chappe, io.vidocq.cassini.jdkhttp, io.vidocq.cassini.cdi.vauban (+ build-time: io.vidocq.cassini.processor, cassini-maven-plugin)

Runtime dependencies

Jakarta specs only (jakarta.ws.rs, jakarta.json.bind). Transport via Chappe or JDK com.sun.net.httpserver. CDI optional via Vauban.

TCK

✅ 2535 / 2535 applicable (100 %) — details here.

Position in the ecosystem

flowchart LR
  Client[HTTP client] -->|HTTP/1.1, H2, H3| Chappe[Chappe<br/>transport]
  Chappe -->|CassiniHttpExchange| Cassini[Cassini<br/>JAX-RS router]
  Cassini -->|@Inject| Vauban[Vauban<br/>CDI Lite]
  Cassini -->|JSON-B| Champollion[Champollion<br/>JSON-P / JSON-B]
  Cassini -->|dispatch| Resource[@Path UserResource]
  Resource --> Cassini
  Cassini -->|response| Chappe
  Chappe --> Client

Cassini shares Chappe with Foy (Servlet 6.1): a single process can expose a JAX-RS application and a Servlet deployment on the same listener.

Consolidated bugs and benchmarks: lien:https://codeberg.org/Vidocq/cassini/src/branch/main/BUG.md[BUG.md], lien:https://codeberg.org/Vidocq/cassini/src/branch/main/BENCH.md[BENCH.md].