jimble とは#
jimble は Java の Web フレームワークです。Helidon の Níma(仮想スレッド)の上に載り、 ルーティング・DB・テンプレート・バッチ・MQ・SSE・WebSocket・MCP をひとまとまりで持ちます。
get("/hello", context -> context.response().send("hello, jimble\n"));
何が違うのか#
ほとんどのフレームワークは「書く量を減らすこと」を目指します。 jimble が目指すのは 読む人が上から順に追えること です。
- 注釈がない。
@Controllerも@Injectも@Transactionalもありません。 ルートはget("/hello", ...)と書いてあるところにしかありません。 - DI コンテナがない。 オブジェクトは
newします。誰が誰を作るかはコードに出ています。 - 起動時にクラスパスを走査しない。 起動が速く、ネイティブイメージとも喧嘩しません。
そのかわり、使うものは自分で
install()します。
この3つを守ると、「なぜこれが動くのか分からない」という時間が消えます。 かわりに数行だけ多く書きます。jimble はそちらのほうが安いと考えています。
詳しくは 考え方 を読んでください。
いま何ができるか#
| できること | 見るところ |
|---|---|
| HTTP のルーティング、パスパラメータ、フィルタ | ルーティング |
| リクエストの読み取りと検証、レスポンスの組み立て | リクエストとレスポンス |
| ファイルアップロードとダウンロード | ファイルアップロード |
| 入力の検証、ページング | 検証とページング |
| 例外・未マッチ・検証失敗の扱い | エラー処理 |
| jte テンプレート(コンパイル済み) | テンプレート |
| 静的ファイル・SPA・MPA の配信 | 静的ファイルと SPA |
| セッション・CSRF・Flash・署名付き Cookie | セッションと安全側の既定 |
| レートリミット(ルート単位・IP 単位) | レートリミット |
| 仮想スレッド、何がどこで動くか、止め方 | 実行モデル |
| SQL DSL、テーブル定義の生成 | DB を使う |
| マイグレーションとコード生成の流れ | マイグレーションとコード生成 |
| トランザクション | トランザクション |
| キャッシュ(DB / メモリ / Redis)と分散ロック | キャッシュとロック |
| cron で回るバッチ、管理画面 | バッチ |
| DB を使ったキュー | MQ |
| Server-Sent Events | SSE |
| WebSocket | WebSocket |
| Model Context Protocol のサーバー | MCP |
| CLI の入れ方、雛形の生成、ホットリロード | jimble コマンド / ホットリロード |
| Gradle のタスクと設定 | Gradle プラグイン |
| テストの書き方(DB を使うぶんの分け方も) | テスト |
| Data・JSON・HTTP クライアント・CSV・暗号 | ユーティリティ |
| ポート・上限・プロキシ・圧縮 | サーバー設定 |
| アクセスログ、実行 ID、logback の設定 | ログ |
版について#
このサイトは、いちばん新しいリリースの内容です。 反映はリリースのときだけなので、ここに書いてあることは公開されている版で動きます。
公開されているものは Maven Central にあります。 依存の座標と、そのまま動くビルドファイルは Gradle プラグイン に、 ソースは GitHub にあります。
まず動かす#
5分で最初のエンドポイント へ進んでください。