LuxCore

LuxCore

Framework web para Java

Arranca solo, sin contenedor de servlets y sin una sola dependencia externa. 297 KB en cinco módulos que se toman por separado.

297KBCinco módulos
0depsEn ejecución
143clsDe producción
106msArranque
1227Pruebas
$ ./lux correr
@Route("/api/tareas")
public class TareaController {

    @Inject Tareas tareas;

    @Get
    public Object listar(@Query(value = "pagina", orElse = "1") int pagina) {
        return tareas.findPage(pagina, 20);
    }

    @Get("/{id}")
    public Object ver(@Path("id") long id) {
        Tarea t = tareas.findById(id);
        if (t == null) throw new HttpException(404, "no existe");
        return t;
    }

    @Post
    public Object crear(@Body @Valid Tarea tarea) {
        return Result.created(tareas.insert(tarea));
    }

    @Delete("/{id}")
    public Object borrar(@Path("id") long id) {
        return tareas.deleteById(id) == 0
             ? Result.status(404, "no existe")
             : Result.noContent();
    }
}
01

Por qué existe

LuxCore nace de JxMVC, un framework MVC que funciona y está en producción — pero que necesita Tomcat para arrancar. Quitar el contenedor no era un capricho: era el 94 % del tiempo de arranque y el 98 % del peso desplegado.

MétricaJxMVC sobre TomcatLuxCoreDiferencia
Arranque698 ms106 ms6,6×
Desplegado253 KB + ~15 MB297 KB51×
Imagen de contenedor274 MB110 MB2,5×
Dependencias en ejecuciónJakarta EE 10ninguna
Pruebas3471 2272,7×

Y no hay que saltar de golpe: lux-adapter-servlet despliega una aplicación LuxCore dentro de Tomcat, así que la migración es reversible.

02

Qué trae

Servidor

HTTP/1.1 con un hilo virtual por conexión. TLS, keep-alive, chunked, multipart, gzip, cookies, sesiones y archivos estáticos.

Rutas

Plantillas {var}, comodines y una regla sin excepciones. Lo literal gana a lo variable y las rutas duplicadas fallan al arrancar, no en producción.

Datos

JDBC directo sin ORM, con pool, transacciones y repositorios. Verificado contra PostgreSQL 16, MySQL 8 y H2 con la misma batería.

Vistas

Plantillas compiladas con herencia, bucles e inclusión. El escapado HTML es el comportamiento por defecto, no una opción que se olvida.

Seguridad

CORS, CSRF, rate limiting, validación declarativa, sanitizado y cabeceras de seguridad. Probado con clientes hostiles y entradas malformadas.

Asíncrono

Tareas en segundo plano sobre hilos virtuales, programación por intervalo y cron de cinco campos. Una tarea que falla no derriba el planificador.

Integración

Cliente HTTP con reintentos y eventos servidos — que es como transmiten las APIs de IA, así que consumirlas es una línea.

Identidad

Entrar con Google, Microsoft o GitHub, con PKCE y verificación de firma del id_token. Contraseñas con PBKDF2 y coste embebido.

Observabilidad

Métricas por ruta con percentiles, en JSON o formato Prometheus, y log de acceso combinado o compacto.

03

Lo que todavía no

No lo pongas delante de tráfico de desconocidos

El servidor HTTP tiene días de vida. Una auditoría encontró una inyección CRLF a las pocas horas de escribirlo, y la primera aplicación real destapó otros cuatro fallos. Todos corregidos y cubiertos — el punto es que aparecieron.

Sirve hoy para un proyecto interno, un prototipo o una herramienta de equipo. Ya corre en Linux, ya está medido contra sus cinco rivales y los gana en casi todo. Lo que falta no se arregla programando: dejarlo semanas recibiendo tráfico real. Está todo detallado, sin adornos, en Estado.

04

Empezar