jimble

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分で最初のエンドポイント へ進んでください。