First preview coming soon.
The core works, the tests pass, and the examples and benchmarks are public. We are packaging the protected binary, finalizing its Maven coordinates, and preparing the first GitHub Release.
A Java app and data that fits in memory.
No Spring requirement. No server process. No cluster-shaped hole in your afternoon.
Use Java 17 or newer
JemDB is a compiled Java library. It can be embedded in plain Java, Spring Boot, desktop tools, or batch applications.
Define a schema
Choose fields, indexes, a primary key, and optional partitions around the queries your application actually needs.
Load complete rows
Your application owns the source data and rebuilds the in-memory search state. Upserts currently replace complete rows.
Query with typed fields
Resolve field handles once, build strict queries, and use a reusable cursor to stream results into your own output format.
The shape of a JemDB application
This is real public API code from the smallest example. The only missing ingredient today is the released dependency coordinate.
var db = new JemDb(JemDbConfig.builder()
.addStringField("id")
.addStringField("title")
.addBooleanField("available")
.setPrimaryKey("id")
.build());
var id = db.stringField("id");
var title = db.stringField("title");
var available = db.booleanField("available");
db.upsert(new SimpleRowData(db.getFieldCount())
.setString(id, "B-101")
.setString(title, "The Left Hand of Darkness")
.setBoolean(available, true));
var query = Query.builder()
.where(available, true)
.build();
try (var results = db.query(query)) {
while (results.next()) {
System.out.println(results.get(title));
}
}Know the fence line
JemDB is for read-heavy, structured search when the searchable data and indexes fit comfortably in memory and one application thread can own updates. It is not durable storage, SQL, full-text relevance, distributed replication, or a multi-writer transaction engine.
Missing values are represented by application-chosen defaults. Updates replace complete rows and may fail if they do not match the schema. These are deliberate first-version boundaries, documented so nobody finds them by stepping on a rake.
Free to use. Source stays private.
JemDB binary releases, examples, demos, and benchmarks are offered under the Elastic License 2.0. You may use JemDB in internal, self-managed, commercial, and SaaS applications. You may not offer substantial JemDB functionality as a hosted or managed JemDB service.
In plain English: put it in your application and build something useful. Please do not repackage JemDB itself as your own hosted JemDB product. The engine implementation is private; examples, demos, and benchmark source are public.
Want the first release?
The GitHub repository is the source of truth until the preview package is ready.