Javalin 简介

https://javalin.io/

一个简单的 Web 框架 适用于 Java 和 Kotlin

import io.javalin.Javalin;

void main() {
    var app = Javalin.create(/*config*/)
        .get("/", ctx -> ctx.result("Hello World"))
        .start(7070);
}
import io.javalin.Javalin

fun main() {
    val app = Javalin.create(/*config*/)
        .get("/") { ctx -> ctx.result("Hello World") }
        .start(7070)
}

为什么选择 Javalin ?

  • 简单
    与其他 Java 和 Kotlin Web 框架不同,Javalin 几乎没有需要学习的概念。你从不扩展类,也很少实现接口。

  • 轻量级
    Javalin 只是 Jetty 上的几千行代码,其性能与原始 Jetty 代码相当。由于其规模庞大,很容易对源代码进行推理。

  • 互操作性
    其他 Java 和 Kotlin Web 框架通常为每种语言提供一个版本。Javalin 的构建考虑到了互操作性,Java 和 Kotlin 的应用程序构建方式是相同的。

  • 灵活
    Javalin 被设计成简单且阻塞的,因为这是最容易推理的编程模型。但是,如果你因此设置了 Future,Javalin 就会切换到异步模式。

  • OpenAPI
    许多轻量级的 Java 和 Kotlin Web 框架不支持 OpenAPI, 但 Javalin 支持 (包括 Swagger UI 和 ReDoc)。更多信息请访问 OpenAPI 插件页面。

  • Jetty
    Javalin 在 Jetty 上运行,Jetty 是 JVM 上最常用和最稳定的 Web 服务器之一。你可以完全配置 Jetty 服务器,包括 SSL 和 HTTP3 以及 Jetty 提供的所有其他服务。

声明您的服务器和 API 在同一个文件中

import io.javalin.Javalin;
import static io.javalin.apibuilder.ApiBuilder.*;

void main() {
    var app = Javalin.create(config -> {
        config.useVirtualThreads = true;
        config.http.asyncTimeout = 10_000L;
        config.staticFiles.add("/public");
        config.staticFiles.enableWebjars();
        config.router.apiBuilder(() -> {
            path("/users", () -> {
                get(UserController::getAll);
                post(UserController::create);
                path("/{userId}", () -> {
                    get(UserController::getOne);
                    patch(UserController::update);
                    delete(UserController::delete);
                });
                ws("/events", userController::webSocketEvents);
            });
        });
    }).start(7070);
}
作者:Jeebiz  创建时间:2024-09-19 10:22
最后编辑:Jeebiz  更新时间:2025-11-23 17:38