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.

Core library

globsframework

The data model: GlobType, Field, Glob, MutableGlob, annotations, constraints, and the visitor API. Everything else depends on this.

Dependencies: slf4j-api only

→ GitHub

Serialization

globs-gson

JSON serialization and deserialization using Google Gson. Encode any Glob to JSON and decode JSON back to a Glob — with full support for nested GlobField, arrays, and sparse fields.

Dependencies: gson

→ GitHub

globs-xml

XML serialization built on top of saxstack, a lightweight SAX-based parser. Reads and writes XML without DOM.

Dependencies: saxstack

→ GitHub

globs-bin-serialisation

A compact binary encoder using a TLV (Type–Length–Value) format, similar in spirit to Protocol Buffers — without the code generator. Fields are identified by their index in the GlobType.

Dependencies: none

→ GitHub

globs-csv

Read and write CSV (and similar delimiter-separated formats) using Apache Commons CSV. Column names are matched to StringField / DoubleField / etc. automatically.

Dependencies: commons-csv

→ GitHub

Database

globs-db

SQL access via JDBC. Create tables from a GlobType, run type-safe insert / update / delete / select queries, stream results as Globs. Works with any JDBC driver.

Dependencies: JDBC driver of your choice

→ GitHub

Network & APIs

globs-http

HTTP server and client adapter backed by Apache HTTP Components. URL parameters, query parameters, request bodies, and headers are all modeled as Globs. Automatically generates an OpenAPI JSON from your type definitions.

Dependencies: httpcomponents-core 5

→ GitHub

globs-graphql

GraphQL API implementation. Resolvers receive and return Globs; the schema is derived from GlobType definitions. Uses ANTLR with the official GraphQL grammar — no heavy graphql-java dependency for execution.

Dependencies: antlr4-runtime

→ GitHub

globs-grpc

gRPC integration. Maps Protobuf messages to and from Globs so that gRPC services can be implemented using the same model as the rest of the application.

Dependencies: none

→ GitHub

globs-etcd

Service discovery and distributed configuration using etcd. Key-value entries are stored and retrieved as Globs, making cluster configuration type-safe.

Dependencies: jetcd

→ GitHub

globs-nats

Messaging with NATS. Publish and subscribe to Glob-encoded messages over NATS subjects, with automatic serialization/deserialization.

Dependencies: nats.java

→ GitHub

Tooling & utilities

globs-commandline

Parse command-line arguments into a Glob. Define your CLI flags as a GlobType; the parser fills in a MutableGlob from argv. Automatic --help text is generated from annotations.

Dependencies: none

→ GitHub

globs-generate experimental

Generates optimized Glob instances for a given GlobType using ASM bytecode generation. Instead of the generic map-based implementation, each type gets a dedicated class with native primitive storage (no boxing for int, long, double), plus low-level zero-copy accessors (GlobGetIntAccessor, GlobSetDoubleAccessor, …) for high-throughput use cases. Activated via a system property — no API change needed.

Dependencies: asm

Work in progress — not yet used in production.

→ GitHub

globs-view

Data aggregation and reporting. Define breakdowns and outputs over Globs — similar to pivot tables — to produce summary views from a stream of Globs.

Dependencies: none

→ GitHub

globs-shared (off-heap)

High-performance off-heap storage for Globs using Java's Foreign Memory API (Java 22+). Stores large datasets outside the JVM heap to reduce GC pressure, with unique and non-unique indexed lookups and disk persistence.

Dependencies: Java 22+  ·  Maven: globs-ffm

→ GitHub

globs-fix experimental

FIX (Financial Information eXchange) protocol support. Encode and decode FIX messages as Globs, bringing the same generic pipeline to financial messaging.

Dependencies: none

Work in progress — not yet used in production.

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.