jimble

What jimble is#

jimble is a web framework for Java. It sits on Helidon's Níma (virtual threads) and gives you routing, DB, templates, batch, MQ, SSE, WebSocket, and MCP as one piece.

get("/hello", context -> context.response().send("hello, jimble\n"));

What makes it different#

Most frameworks aim to reduce how much you write. jimble aims to let the person reading the code follow it top to bottom.

  • No annotations. There is no @Controller, no @Inject, no @Transactional. A route exists only where get("/hello", ...) is written.
  • No DI container. You new your objects. Who creates whom is right there in the code.
  • No classpath scanning at startup. Startup is fast, and nothing fights with native images. In exchange, you install() what you use yourself.

Hold to these three and the "why does this even work?" hours disappear. The price is a few extra lines. jimble thinks that is the cheaper side of the trade.

Read Principles for the details.

What it can do today#

What you can do Where to look
HTTP routing, path parameters, filters Routing
Reading and validating requests, building responses Request and response
File upload and download File upload
Input validation, paging Validation and paging
Handling exceptions, unmatched routes, validation failures Error handling
jte templates (precompiled) Templates
Serving static files, SPAs, MPAs Static files and SPAs
Session, CSRF, flash, signed cookies Session and safe defaults
Rate limiting (per route, per IP) Rate limiting
Virtual threads, what runs where, how to stop it Execution model
SQL DSL, generating table definitions Using the DB
The migration and code generation flow Migrations and code generation
Transactions Transactions
Cache (DB / memory / Redis) and distributed locks Cache and locks
Batch jobs on cron, and the admin screen Batch
A queue backed by the DB MQ
Server-Sent Events SSE
WebSocket WebSocket
A Model Context Protocol server MCP
Installing the CLI, generating a skeleton, hot reload The jimble command / Hot reload
Gradle tasks and configuration the Gradle plugins
How to write tests (including how to split off the ones that use the DB) Testing
Data, JSON, HTTP client, CSV, crypto Utilities
Ports, limits, proxies, compression Server configuration
Access logs, execution IDs, logback configuration Logging

About versions#

This site describes the latest release. It is published only when a release is cut, so what you read here works on the version you can download.

The releases are on Maven Central. The dependency coordinates and a build file that works as it stands are on the Gradle plugins page; the source is on GitHub.

Get it running#

Go to Your first endpoint in 5 minutes.