Ecosystem
GlobsFramework ships a growing collection of modules. Each one shares the same
GlobType / Glob vocabulary, so data flows naturally between
layers without mapping code.
artifactId differ — the
artifact is given on every card below. All artifacts are published under the
org.globsframework group.
Core library
globsframework globs
The data model: GlobType, Field, Glob,
MutableGlob, GlobRepository, annotations, indexes and the
visitor API — plus a fast, non-versioned binary serializer. Everything else depends
on this.
Dependencies: slf4j-api only · Java 21
Serialization
globs-gson globs-gson
JSON in and out, with no introspection — every field is handled by walking the
metamodel with a field visitor. Nested Globs, arrays and unions are supported, an
unset field is simply not written, and the metamodel itself is
serializable (GlobType ⇄ JSON), so a type can travel over the wire and be
rebuilt at runtime.
Dependencies: gson
globs-xml globs-xml
XML in and out, built on saxstack, a lightweight SAX helper — nothing but the branch being read or written is held in memory. Annotations move a field between attribute, child node, text value and CDATA, or attach a namespace.
Dependencies: saxstack
globs-bin-serialisation globs-bin-serialisation
A compact, backward-compatible binary encoder in TLV (Type–Length–Value) form, in the spirit of Protocol Buffers but without a code generator. Each field carries a stable number, so a reader built from an older version of the type skips what it does not know and keeps working.
Dependencies: none
globs-grpc globs-protobuf
Read and write Globs directly in the protobuf wire format — no
protobuf-java messages, no descriptors, no generated classes. The mapping
is a ProtobufField annotation on the type, so a Glob is on the wire
exactly what a .proto message would be, byte for byte.
Dependencies: none (protobuf-java is test scope only)
globs-csv globs-csv
The flat-file formats: delimited files through Apache Commons CSV, Excel sheets
through Apache POI, and fixed-width text — all driven by a GlobType
rather than by a per-file parser. Includes a reformatter that maps one type onto
another while the data flows.
Dependencies: commons-csv poi-ooxml
Database
globs-db globs-sql
Relational access driven by a GlobType instead of an ORM mapping: fields
are columns, key fields are the primary key. It works both ways — create tables and
run typed insert / update / delete / select from a type, or build a type at runtime
from JDBC metadata. Transaction templates, a failure hierarchy you can retry on, and
connection pooling when HikariCP is present.
Dependencies: globs-gson a JDBC driver of your choice
Network, APIs & protocols
globs-http globs-http
An HTTP API whose routes, path and query parameters, headers, bodies and responses are
all described by GlobTypes, on top of Apache HttpCore 5 async. The same
declarations produce the OpenAPI 3.0.1 document — itself a Glob — so
the documentation cannot drift from the server.
Dependencies: httpcore5 globs-gson
globs-graphql globs-graphql
A GraphQL engine where every value is a Glob and every type a GlobType —
no code generation, no graphql-java for execution. Resolvers are called
once per level, not once per node, so the N+1 problem is designed out
rather than patched with a data loader.
Dependencies: antlr4-runtime globs-gson
globs-mcp globs-mcp prototype
GlobType → JSON Schema, and Model Context Protocol tools
over stdio or streamable HTTP. A tool definition is a type: the schema the
model sees is derived from it, and what the model sends back arrives decoded, typed and
validated. Bridges turn an existing globs-http API or a
globs-sql database into an MCP server with no extra declaration.
Dependencies: globs-gson globs-http / globs-sql for the bridges
Not published yet — build it locally.
globs-network globs-rpc-direct
Point-to-point exchange of Globs over plain blocking sockets, one thread per
connection — no HTTP, no broker, no IDL. The contract between the two ends is the
GlobType itself; the wire carries a TLV-serialized Glob. Two shapes:
request/response, and streaming with optional acknowledgement.
Dependencies: globs-bin-serialisation
globs-fix globs-fix
A FIX 4.4 engine whose messages are Globs instead of generated classes. The dictionary is a QuickFIX-style XML file; the binding between a type and the wire format is annotation-driven and resolved once at startup into flat lookup tables, so the per-message path does no reflection and no allocation. Includes a full session layer — logon/logout, sequence numbers, gap fill, resend, heartbeat.
Dependencies: globs-xml globs-gson · Java 22+
globs-etcd globs-etcd
Publish Globs into etcd and subscribe to their changes — meant for
propagating configuration and slowly-changing state between microservices. A
GlobType describes both the value and the key: the fields annotated
PathIndex form the etcd key.
Dependencies: jetcd-core
globs-nats spike
The starting point for a future NATS transport. Today it holds a round-trip latency measurement against a NATS server — there is no Glob ⇄ NATS binding in it yet.
Dependencies: jnats · Java 24
Tooling & utilities
globs-commandline globs-commandline
Turn command-line arguments — or environment variables — into a Glob. The
GlobType is the whole declaration of the options: one field per option,
its Java type gives the conversion, and a few annotations cover defaults, mandatory
options, array separators and positional arguments.
Dependencies: none
globs-generate globs-generate
Runtime bytecode generation with ASM, plugged into core through its service points and
selected by a system property — no API change on your side. Two independent things:
a dedicated Glob implementation per type, with values in real Java fields;
and, the part that actually pays, the generated traversal a codec does
over a Glob, emitted unrolled so each per-field call site is monomorphic and inlines
where a hand-written loop stays megamorphic.
Dependencies: asm
globs-view globs-view
Query a collection of Globs by breakdown and output — the pivot-table
shape. The dimensions are not written in code: they are discovered from the
GlobType, published as a dictionary and picked by name in the request,
which is what makes it an endpoint an interactive UI can drive.
Dependencies: globs-gson globs-http for the ready-made server
globs-shared globs-off-heap
Store Globs in memory-mapped files outside the Java heap, and read them back through
indexed lookups. The record layout is derived once from the GlobType with
the Foreign Memory API and every access goes through a pre-resolved
VarHandle. Two engines: a write-once tree store with sorted indexes, and a
hash store supporting in-place update. The storage format is the file format.
Dependencies: none · Java 22+
Quickstart: all-in-one example
The easiest way to see the ecosystem in action is to clone the all-in-one repository, which wires several modules together in runnable examples:
git clone --recursive https://github.com/globsframework/globs-allInOne.git
Then run:
simplest/src/main/java/org/globsframework/sample/graphql/Example2.java
to see JSON, GraphQL, and database layers working together from a single type definition.