Saltar al contenido principal
Desarrollo con IA18 min de lecturaActualizado el

Spring AI vs LangChain4j: qué framework elegir para IA en Java

Cuando un equipo quiere integrar un LLM en una aplicación Java, las dos opciones que aparecen son Spring AI 2.0 y LangChain4j 1.19, y no compiten en el mismo terreno: uno es la manera Spring de hacer IA y el otro una librería para todo el ecosistema Java con un módulo de agentes más ambicioso. Resumen rápido, comparativa por dimensiones, tres ejemplos de código equivalentes, los cinco criterios que deciden de verdad y cuándo la respuesta correcta es no usar ninguno de los dos.

Cuando un equipo quiere integrar un LLM o incorporar IA generativa en una aplicación Java, las dos opciones que aparecen con más frecuencia son Spring AI y LangChain4j. La pregunta suele llegar bien formulada —Java, no Python; un framework, no un prompt— y con las dos candidatas encima de la mesa. Pero casi siempre arrastra una premisa falsa: que Spring AI vs LangChain4j es una comparación entre dos productos equivalentes que compiten por el mismo hueco, y que basta con una lista de características para decidir.

No es así. Spring AI es, ante todo, la manera Spring de integrar IA: un proyecto del portfolio de Spring, diseñado para Spring Boot 4 y Spring Framework 7, con las mismas convenciones de auto-configuración, propiedades y observabilidad que el resto del ecosistema. LangChain4j es una librería para el ecosistema Java más amplio: funciona en Java plano, en Spring Boot, en Quarkus, en Helidon y en Micronaut, y ha invertido más que nadie en un módulo de orquestación de agentes. Elegir entre ellos es, en buena parte, elegir qué grado de acoplamiento a Spring aceptas y cuánta orquestación necesitas de serie.

Este artículo compara ambos frameworks con datos de agosto de 2026 —Spring AI 2.0.1 y LangChain4j 1.19.0—: primero un resumen para decidir en treinta segundos, después la comparativa dimensión a dimensión, tres ejemplos de código equivalentes, los cinco criterios que deciden en un proyecto real y la opción que casi nadie plantea: no usar ninguno. Es la continuación natural de Spring AI, RAG y agentes: cómo construir aplicaciones Java con IA real, donde explicamos la arquitectura; aquí el foco es la decisión.

Spring AI vs LangChain4j: resumen rápido

Si solo tienes treinta segundos, esta tabla y las tres respuestas que la siguen resumen el artículo. Las valoraciones son heurísticas de arquitectura a fecha de agosto de 2026, no una puntuación absoluta: el detalle y los matices están en las secciones siguientes.

  • Si el proyecto usa Spring Boot 4 y el equipo ya trabaja con Spring, Spring AI debería ser normalmente el primer candidato.
  • Si necesitas Java independiente del framework, Quarkus, Helidon, Micronaut o mayor portabilidad, LangChain4j parte con ventaja.
  • Si el caso consiste únicamente en una o dos llamadas sencillas a un LLM, puede ser mejor usar directamente el SDK oficial del proveedor o un cliente HTTP.
Resumen comparativo de Spring AI 2.0 y LangChain4j 1.19 por criterio (agosto de 2026).
CriterioSpring AILangChain4j
Spring BootExcelente: es su entorno nativoMuy bueno, con starters para Boot 3 y Boot 4
Java standaloneNo es su objetivoExcelente
Quarkus, Helidon, MicronautNoExcelente (extensión propia en Quarkus)
MCP clienteExcelenteExcelente
MCP servidorExcelente: anotaciones, OAuth 2.0 y métricasMás dependiente del ecosistema (Quarkus)
RAGExcelenteExcelente
Tool callingExcelente; divulgación progresiva de herramientasExcelente
MultiagentePrimitivas y composición con AdvisorsMódulo agentic específico (beta)
ObservabilidadMicrometer / OpenTelemetry de serieIntegraciones según framework
Portabilidad entre frameworksBajaAlta
Madurez enterpriseMuy alta; soporte comercial vía SpringAlta; comunidad muy activa

Qué es cada uno y de dónde viene

Spring AI nació dentro del ecosistema Spring con una tesis explícita: aplicar a la IA generativa los principios de portabilidad y diseño modular que Spring aplicó a la persistencia o a la mensajería. Alcanzó la versión 1.0 en mayo de 2025 y la 2.0 el 12 de junio de 2026, diseñada para Spring Boot 4.0/4.1 y Spring Framework 7.0, con Java 17 como mínimo, Jackson 3 y anotaciones de null-safety JSpecify en todo el código. La 2.0.1, de 21 de agosto de 2026, es la primera de mantenimiento sobre esa base. Las ramas 1.0.x y 1.1.x siguen recibiendo parches para quien todavía está en Spring Boot 3.

LangChain4j es un proyecto open source independiente, iniciado en 2023 con inspiración en el LangChain de Python pero reescrito con criterios Java —tipado fuerte, POJOs, anotaciones, builders— en lugar de portado. Llegó a 1.0 también en mayo de 2025 y desde entonces publica a un ritmo mucho más alto: la 1.19.0 es del 14 de agosto de 2026, y mantiene en paralelo ramas de mantenimiento como la 1.11.x. Su núcleo es estable, pero varios módulos —el agentic y los starters de Spring, entre otros— siguen versionados como beta, lo que tiene consecuencias que veremos más adelante.

La diferencia de origen explica casi todo lo demás. Spring AI hereda gobernanza, cadencia y soporte comercial del ecosistema Spring, y su público objetivo es el equipo que ya vive en Spring Boot. LangChain4j hereda la ambición funcional del ecosistema LangChain —integraciones con más de veinte proveedores de modelos y más de treinta almacenes de embeddings— y la portabilidad entre frameworks, con una integración especialmente cuidada con Quarkus, que dispone de su propia extensión con dev services, Dev UI y compilación nativa.

El modelo de programación: ChatClient y Advisors frente a AI Services

En Spring AI el punto de entrada es el ChatClient, una API fluida que se construye a partir de un ChatModel auto-configurado y a la que se encadenan prompts, opciones y respuestas tipadas. La extensibilidad se articula con Advisors: interceptores que envuelven la llamada al modelo y que ya cubren la memoria de conversación, el RAG con el QuestionAnswerAdvisor o las salvaguardas. En 2.0 la propia ejecución de herramientas dejó de vivir dentro de cada ChatModel y pasó a ser un Advisor más, el ToolCallingAdvisor, con puntos de extensión explícitos para inicializar, interceptar y finalizar el bucle de llamadas. Es la misma idea que los interceptores de Spring MVC o los aspectos de Spring AOP, y quien conoce Spring la reconoce al instante.

En LangChain4j el modelo dominante son los AI Services: defines una interfaz Java, anotas sus métodos con @SystemMessage y @UserMessage, declaras parámetros con @V y devuelves un tipo de dominio —un record, una lista, un enum—, y el framework genera la implementación. Es el mismo patrón declarativo que Spring Data aplica a los repositorios, aplicado al LLM. Memoria, herramientas, recuperación y guardrails se conectan a esa interfaz mediante el builder o mediante anotaciones, y en Quarkus o Spring Boot basta con inyectar la interfaz.

Ninguno de los dos enfoques es mejor en abstracto: el ChatClient da control explícito de cada llamada y encaja donde el prompt cambia según el flujo; los AI Services ocultan mejor el LLM detrás de un contrato de dominio. Los tres ejemplos que siguen muestran la diferencia con código, y la tabla resume la correspondencia entre conceptos.

Correspondencia entre conceptos de Spring AI y LangChain4j para las tareas más habituales.
TareaSpring AI 2.0LangChain4j 1.19
Llamar al modeloChatClient fluido sobre ChatModel auto-configuradoChatModel directo o AI Service declarativo (interfaz + anotaciones)
PromptsPromptTemplate y métodos user()/system() del ChatClient@SystemMessage, @UserMessage y variables con @V
Memoria de conversaciónChatMemory + MessageChatMemoryAdvisor; repositorios JDBC, Cassandra, Neo4j y otrosChatMemory (ventana por mensajes o tokens) + ChatMemoryStore persistente
Salida estructuradaentity(Class) con BeanOutputConverter; StructuredOutputValidationAdvisor autocorrige JSON no conformeTipo de retorno del AI Service; JSON Schema cuando el proveedor lo soporta
Herramientas@Tool sobre métodos; tools(...) por llamada o ToolCallback beans por defecto; ToolCallingAdvisor ejecuta el bucle@Tool sobre métodos; tools(...) en el builder o @Component con @Tool en Spring Boot
RAGVectorStore + QuestionAnswerAdvisor o RetrievalAugmentationAdvisor modularEmbeddingStore + ContentRetriever + RetrievalAugmentor con query transformers y reranking
ExtensiónAdvisors en cadena con orden explícitoListeners, guardrails de entrada y salida, RetrievalAugmentor personalizado

Ejemplo 1: la misma llamada al modelo en Spring AI y en LangChain4j

El caso más simple de integrar un LLM en Java: un servicio que resume un documento. En Spring AI se inyecta un ChatClient.Builder auto-configurado y la llamada es una cadena fluida; en LangChain4j se declara una interfaz y el framework la implementa. Los dos fragmentos hacen exactamente lo mismo.

Spring AI 2.0 · ChatClientjava
@Service
public class ResumenService {

    private final ChatClient chatClient;

    public ResumenService(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    public String resumir(String documento) {
        return chatClient.prompt()
            .system("Resume documentos en tres frases, en español.")
            .user(documento)
            .call()
            .content();
    }
}
LangChain4j 1.19 · AI Servicejava
public interface Resumidor {

    @SystemMessage("Resume documentos en tres frases, en español.")
    String resumir(@UserMessage String documento);
}

// Java plano, Quarkus, Helidon...: se construye explícitamente
Resumidor resumidor = AiServices.builder(Resumidor.class)
    .chatModel(chatModel)
    .build();

// Spring Boot: basta anotar la interfaz con @AiService e inyectarla

Ejemplo 2: structured output con records de Java

Aquí está una de las ventajas competitivas de hacer IA generativa con Java frente a Python: el contrato con el modelo puede ser un record inmutable, tipado y validable, no un diccionario. Ambos frameworks convierten la respuesta del modelo en ese tipo, y el resto de la aplicación trabaja con un objeto Java normal.

Contrato compartidojava
public record TicketClassification(
    String category,      // facturacion | tecnico | comercial
    double confidence,    // 0.0 - 1.0
    String reasoning
) {}
Spring AI 2.0 · entity()java
TicketClassification result = chatClient.prompt()
    .system("Clasifica tickets de soporte en: facturacion, tecnico, comercial.")
    .user(ticket)
    .call()
    .entity(TicketClassification.class);
LangChain4j 1.19 · tipo de retorno del AI Servicejava
public interface TicketClassifier {

    @SystemMessage("Clasifica tickets de soporte en: facturacion, tecnico, comercial.")
    TicketClassification classify(@UserMessage String ticket);
}

Ejemplo 3: exponer un servicio Java como herramienta (tool calling)

El tool calling en Java tiene una virtud: la herramienta es un método de un servicio normal, con su inyección de dependencias, sus transacciones y sus tests. Lo único que cambia entre frameworks es la anotación y cómo se registra. El servicio de negocio —OrderService— no sabe que existe un LLM.

Spring AI 2.0 · @Tool y tools()java
@Component
public class OrderTools {

    private final OrderService orderService;
    // ...constructor

    @Tool(description = "Devuelve el estado actual de un pedido a partir de su identificador")
    public String getOrderStatus(
            @ToolParam(description = "Identificador del pedido, p. ej. ORD-10234") String orderId) {
        return orderService.findStatus(orderId).map(Enum::name).orElse("NOT_FOUND");
    }
}

// Por llamada (o como ToolCallback bean con defaultTools):
String answer = chatClient.prompt()
    .user("¿En qué estado está el pedido ORD-10234?")
    .tools(orderTools)
    .call()
    .content();
LangChain4j 1.19 · @Tool y tools()java
public class OrderTools {

    private final OrderService orderService;
    // ...constructor

    @Tool("Devuelve el estado actual de un pedido a partir de su identificador")
    public String getOrderStatus(
            @P("Identificador del pedido, p. ej. ORD-10234") String orderId) {
        return orderService.findStatus(orderId).map(Enum::name).orElse("NOT_FOUND");
    }
}

Assistant assistant = AiServices.builder(Assistant.class)
    .chatModel(chatModel)
    .tools(new OrderTools(orderService))
    .build();

// Spring Boot: cualquier @Component con métodos @Tool se registra automáticamente

Tabla comparativa por dimensiones

La comparación completa, con el estado de cada proyecto en el momento de escribir. Conviene leerla con una cautela: ambos publican con frecuencia y varias celdas envejecerán en meses, no en años. La dirección de cada proyecto, en cambio, cambia despacio y es lo que debería pesar en la decisión.

Spring AI 2.0.1 frente a LangChain4j 1.19.0, dimensión a dimensión (agosto de 2026).
DimensiónSpring AILangChain4j
NaturalezaProyecto del portfolio Spring; soporte comercial vía BroadcomProyecto open source independiente, gobernado por su comunidad
Versión y cadencia2.0.1 (21 ago 2026); ramas 1.0.x y 1.1.x en mantenimiento; cadencia alineada con Spring Boot1.19.0 (14 ago 2026); releases casi mensuales; rama 1.11.x en mantenimiento
BaselineSpring Boot 4.0/4.1, Spring Framework 7, Java 17+, Jackson 3, JSpecifyJava 17+; starters separados para Spring Boot 3 (-spring-boot-starter) y 4 (-spring-boot4-starter)
FrameworksSpring BootJava plano, Spring Boot, Quarkus (extensión propia), Helidon, Micronaut
Proveedores de modelosNúcleo consolidado en 2.0: OpenAI, Anthropic, Amazon Bedrock, Google GenAI, Mistral, DeepSeek y Ollama; otros mantenidos por los propios vendorsMás de veinte, incluidos proveedores regionales y locales; el catálogo más amplio del JVM
Almacenes vectorialesUna veintena con la abstracción VectorStore y filtros de metadatos portablesMás de treinta con EmbeddingStore; búsqueda híbrida en varios de ellos
Tool callingToolCallingAdvisor unificado para todos los proveedores; ToolSearchToolCallingAdvisor para divulgación progresiva de herramientas@Tool y ToolProvider; ejecución automática dentro del AI Service; compensación de acciones en el módulo agentic
MCPMCP Java SDK 2.0 (spec 2025-11-25); cliente y servidor con @McpTool, @McpResource y @McpPrompt; Streamable HTTP por defecto; OAuth 2.0Cliente MCP alineado con la revisión 2026-07-28; para exponer servidores, Quarkus aporta su propia extensión
AgentesAdvisors componibles y bucle de herramientas; sin orquestador multiagente de serie; utilidades de la comunidad (spring-ai-agent-utils)Módulo langchain4j-agentic (beta): secuencia, paralelo, bucle, condicional, supervisor, planner, human-in-the-loop con suspensión y reanudación
ObservabilidadMicrometer de serie: observaciones de ChatModel, VectorStore y Advisors; métricas OpenTelemetry en MCPListeners de modelo y trazas vía las integraciones de Spring Boot o Quarkus
GuardrailsSafeGuardAdvisor y advisors propiosGuardrails de entrada y salida como concepto de primera clase
Nativo (GraalVM)Soporte AOT alineado con Spring Boot 4Soporte nativo maduro a través de Quarkus

Tool calling, MCP y agentes en Java: donde de verdad divergen

En la llamada básica al modelo y en el RAG sencillo, ambos frameworks se parecen tanto que la elección no debería depender de eso. Donde divergen es en las tres capas que separan un chatbot de una aplicación que hace cosas: herramientas, conexión con sistemas y orquestación.

En herramientas, Spring AI 2.0 dio un paso que conviene entender. Al sacar el bucle de tool calling de cada implementación de ChatModel y convertirlo en un Advisor, el comportamiento es el mismo con cualquier proveedor y se puede interceptar en cada fase: antes de la llamada, después de cada ejecución de herramienta, al cerrar el bucle. Sobre esa base construyó la divulgación progresiva de herramientas —el modelo no recibe cien definiciones de golpe, sino que busca las que necesita—, con la que el propio equipo reporta reducciones de consumo de tokens del 34 al 64 % en sus pruebas. Para aplicaciones con decenas de herramientas es la diferencia entre un contexto manejable y uno que degrada la decisión del modelo, un problema que ya tratamos en harness engineering.

En MCP la ventaja de Spring AI es estructural: el MCP Java SDK oficial se desarrolla en estrecha colaboración con el equipo de Spring AI, y 2.0 lo integra con un modelo de anotaciones para exponer herramientas, recursos y prompts, transporte Streamable HTTP por defecto, seguridad OAuth 2.0 y métricas. Si tu plan pasa por exponer sistemas Java a agentes —el ERP, el core, el sistema de expedientes— como servidores MCP, es el camino más corto. LangChain4j ofrece un cliente MCP al día con la especificación, pero el lado servidor lo delega en el ecosistema Quarkus.

En agentes la ventaja está en el otro lado. LangChain4j ha construido un módulo agentic que cubre los patrones de composición —secuencia, paralelo, bucle con condición de salida, enrutado condicional—, un supervisor que planifica sobre subagentes, un planificador orientado a objetivos, un espacio compartido (AgenticScope) que actúa como pizarra entre agentes, human-in-the-loop con suspensión y reanudación resistentes a caídas y, en 1.19, compensación de acciones para deshacer efectos cuando un paso posterior falla. Spring AI ofrece los bloques —advisors, bucle de herramientas, memoria— y deja la orquestación en tu código o en proyectos que se apoyan sobre Spring, como Embabel. Es una diferencia de filosofía: Spring AI te da primitivas, LangChain4j te da un motor.

  • Herramientas a escala (decenas o cientos): Spring AI, por la divulgación progresiva y el bucle unificado.
  • Exponer sistemas Java como servidores MCP: Spring AI.
  • Orquestación multiagente con patrones de serie: LangChain4j, aceptando que el módulo es beta.
  • Workflows deterministas con un LLM dentro: cualquiera de los dos; aquí la diferencia la hace tu código, no el framework.

Cinco criterios que deciden de verdad

La tabla informa; estos cinco criterios deciden. Están ordenados por el peso que suelen tener en un proyecto real, y los dos primeros resuelven la mayoría de los casos sin necesidad de seguir. Son heurísticas, no reglas: cada una admite excepciones que conviene razonar.

El primero es el stack. Si la aplicación es Spring Boot 4 y el equipo vive en Spring, Spring AI es la opción por defecto: misma auto-configuración, mismas propiedades, misma observabilidad con Micrometer, mismo ciclo de releases. Si es Quarkus, la extensión de LangChain4j es probablemente la mejor experiencia de desarrollo con IA en Java, con dev services para levantar Ollama o pgvector y compilación nativa probada. Si es Java plano, Helidon o Micronaut, LangChain4j es la única de las dos que aplica de forma natural. Y si todavía estás en Spring Boot 3, Spring AI 1.1.x sigue soportado pero no recibe las novedades de 2.0, así que la decisión se mezcla con la de migrar a Boot 4.

El segundo es cuánta orquestación necesitas de serie, y ya lo hemos tratado: primitivas frente a motor. El tercero es MCP: consumidor o proveedor. Consumir servidores MCP lo hacen bien ambos; exponerlos desde Java con seguridad y métricas es hoy terreno de Spring AI. El cuarto es la tolerancia al cambio. Spring AI se mueve con Spring Boot, con migraciones documentadas y ramas de mantenimiento largas; LangChain4j publica casi cada mes, y sus módulos beta pueden cambiar de API entre versiones. Un equipo con ventanas de despliegue trimestrales y un equipo que despliega a diario no deberían responder igual a esta pregunta.

El quinto es el equipo y el soporte. Spring AI puede cubrirse con el soporte comercial de Spring y con la formación que ya tiene cualquier desarrollador Spring; LangChain4j depende de una comunidad activa, de documentación buena y de la extensión de Quarkus cuando aplica. No es un criterio menor en sectores regulados donde el comité de arquitectura pregunta quién responde cuando algo falla.

  • Stack: Spring Boot 4 → Spring AI suele ser el primer candidato; Quarkus, Micronaut, Helidon o Java plano → LangChain4j parte con ventaja.
  • Orquestación: primitivas y código propio → Spring AI; patrones multiagente de serie → LangChain4j.
  • MCP: solo cliente → cualquiera; servidor con OAuth y métricas → Spring AI.
  • Ritmo de cambio: ventanas de despliegue largas → Spring AI; capacidad de absorber releases mensuales → LangChain4j.
  • Soporte: contrato comercial y conocimiento Spring existente → Spring AI; comunidad y Quarkus → LangChain4j.

Cuándo no usar ninguno de los dos

Hay una tercera opción que rara vez se plantea porque no sale en las comparativas: el SDK oficial del proveedor, un cliente HTTP o, en Spring, el propio RestClient. Anthropic y OpenAI publican SDK Java oficiales, tipados y mantenidos, y para una aplicación que hace una o dos llamadas a un único proveedor —clasificar, resumir, extraer campos—, sin RAG, sin herramientas y sin memoria, un framework añade una capa de abstracción, una dependencia con su propio ritmo de cambio y una curva de aprendizaje que no se amortizan. La abstracción se debe pagar solo cuando aporta valor.

La señal para saberlo es sencilla: si puedes describir la integración en una frase —"clasificamos cada ticket entrante en una de cinco categorías", "resumimos el documento antes de archivarlo"— probablemente no necesitas framework. Si la frase incluye "y luego consulta", "y decide si", "y recuerda que", ya estás describiendo herramientas, orquestación o memoria, y ahí un framework empieza a pagar su coste.

También conviene ser honesto con el coste de la portabilidad entre proveedores, que es el argumento estrella de ambos frameworks. Cambiar de modelo cambiando una propiedad es real, pero los prompts, las herramientas y las evals no son portables por arte de magia: un prompt afinado para un modelo se degrada en otro, y sin un conjunto de evals no sabrás cuánto. La portabilidad del framework te ahorra el código de integración; no te ahorra la validación.

Señales para decidir entre SDK directo y framework.
SeñalQué implica
Un proveedor, una o dos llamadas, sin herramientas ni RAGSDK oficial, cliente HTTP o RestClient; el framework no se amortiza
Necesitas cambiar de proveedor por coste, residencia de datos o contratoFramework: la abstracción del modelo sí ahorra trabajo
Memoria de conversación persistente y multiusuarioFramework: es tedioso y fácil de hacer mal a mano
Recuperación sobre documentos con filtros por permisosFramework: la abstracción del vector store y los filtros de metadatos merecen la pena
Herramientas con efectos sobre sistemasFramework, y además permisos, validación y trazas propias: ningún framework los pone por ti
Varios agentes que se coordinanFramework con motor de orquestación o código propio muy disciplinado

Diseñar para poder cambiar de opinión: el framework como adaptador

Sea cual sea la elección, el riesgo real no es equivocarse de framework sino dejar que el framework se infiltre en el dominio. Las dos librerías evolucionan rápido: Spring AI 2.0 cambió la forma de registrar herramientas y de configurar opciones respecto a 1.x, y los módulos beta de LangChain4j pueden cambiar de API entre releases. Si los tipos del framework aparecen en tus servicios de negocio, cada actualización se convierte en una migración.

La disciplina que funciona es la de siempre: una fachada de dominio propia —"clasificar ticket", "resumir expediente", "proponer respuesta"— con contratos en records de Java, herramientas implementadas como servicios normales sin anotaciones del framework en su interfaz pública, y el ChatClient o el AI Service confinados en un adaptador. Es la arquitectura hexagonal aplicada al LLM: el modelo es un puerto de salida más, como la base de datos o la cola de mensajes, y Spring AI o LangChain4j son adaptadores de infraestructura, no el centro del dominio.

El framework como adaptadortext
Dominio Java (casos de uso, records, reglas de negocio)
    │
    ▼
Puerto / interfaz propia   →   ClasificadorDeTickets.clasificar(Ticket)
    │
    ├── Adaptador Spring AI        (ChatClient + Advisors)
    │
    └── Adaptador LangChain4j      (AI Service + tools)
            │
            ▼
       OpenAI / Anthropic / Gemini / Mistral / Ollama...
  • Fachada de dominio con records propios; ningún tipo del framework fuera del adaptador.
  • Herramientas como servicios Java normales; las anotaciones del framework, en una clase envoltorio.
  • Prompts versionados junto al código, con evals que los acompañen.
  • Tests de integración con Testcontainers y un modelo local; los contratos, sin red.
  • Proveedor de LLM aislado tras el adaptador: cambiar de modelo no debe tocar el dominio.
  • Observabilidad desde el día uno: tokens, latencia y coste por endpoint y por tenant.
2.0.1
Spring AI, 21 de agosto de 2026: primera release de mantenimiento sobre Spring Boot 4
1.19.0
LangChain4j, 14 de agosto de 2026: cliente MCP al día y compensación de acciones en agentes

Árbol de decisión: resolverlo en diez minutos

Para cerrar, la versión operativa. Recorre las preguntas por orden con tu caso de uso delante, no con una lista de deseos, y detente en la primera que decide. Cada respuesta es la opción habitual, no una regla: si tu contexto la contradice, razona la excepción y documéntala.

  • ¿La integración cabe en una frase sin "y luego", "y decide" ni "y recuerda"? Sí → SDK oficial, cliente HTTP o RestClient suelen bastar.
  • ¿La aplicación es Quarkus, Micronaut, Helidon o Java plano? Sí → LangChain4j parte con ventaja.
  • ¿Vas a exponer sistemas Java como servidores MCP con seguridad y métricas? Sí → Spring AI es hoy el camino más corto.
  • ¿Necesitas patrones multiagente de serie (supervisor, bucles, human-in-the-loop) y puedes absorber un módulo beta? Sí → LangChain4j.
  • ¿Es Spring Boot 4 y el equipo es Spring? Sí → Spring AI es normalmente el primer candidato. Es el caso más frecuente y el de menor fricción.
  • ¿Sigues en Spring Boot 3 sin fecha de migración? → Spring AI 1.1.x hoy, con la migración a Boot 4 y Spring AI 2.0 en el plan; o LangChain4j si la migración no va a ocurrir.
  • Sea cual sea la respuesta: fachada de dominio, herramientas como servicios Java y evals antes de producción.

Sigue profundizando en IA con Java

Este artículo es la entrada de la serie de DatIACode sobre inteligencia artificial con Java. Lo que ya está publicado y encaja con la decisión que acabas de tomar:

Conclusión

Spring AI vs LangChain4j no es una elección entre dos productos equivalentes, sino entre dos posiciones. Spring AI es la manera Spring de integrar modelos: convenciones conocidas, cadencia alineada con Spring Boot 4, un bucle de herramientas unificado con divulgación progresiva y la integración MCP más completa del JVM, incluido el lado servidor. LangChain4j es una librería para todo el ecosistema Java: más proveedores, más almacenes, una integración con Quarkus excelente y un motor de orquestación de agentes que Spring AI no tiene de serie, a cambio de un ritmo de cambio más alto y de módulos que todavía son beta.

En la práctica, la decisión se toma con el stack y con la cantidad de orquestación que necesitas; el resto son matices. Y la decisión más importante al integrar un LLM en una aplicación Java no es cuál de los dos, sino cómo lo aíslas: una fachada de dominio propia, herramientas como servicios Java normales y evals desde el principio hacen que cualquiera de las dos opciones sea reversible. Si quieres que revisemos ese diseño sobre tu caso, en DatIACode lo trabajamos con desarrollo con Spring AI y consultoría de implantación de IA.

Preguntas frecuentes

¿Qué diferencia hay entre Spring AI y LangChain4j?

Spring AI es un proyecto del portfolio de Spring, diseñado para Spring Boot 4 y Spring Framework 7, con las convenciones de auto-configuración y observabilidad del ecosistema. LangChain4j es una librería open source independiente y agnóstica del framework: funciona en Java plano, Spring Boot, Quarkus, Helidon y Micronaut. Ambos cubren llamadas a modelos, memoria, RAG, tool calling y MCP; divergen en la integración MCP del lado servidor, más completa en Spring AI, y en la orquestación de agentes, donde LangChain4j ofrece un módulo específico que Spring AI no tiene de serie.

¿Cuál es mejor para Spring Boot?

Para integrar un LLM en Spring Boot 4 con un equipo Spring, Spring AI suele ser la opción de menor fricción: misma configuración por propiedades, misma observabilidad con Micrometer y cadencia de releases alineada con Boot. LangChain4j también se integra con Spring Boot mediante starters específicos para Boot 3 y Boot 4, y tiene sentido si necesitas su módulo de agentes o un proveedor que Spring AI no cubre en su núcleo.

¿Cuál es mejor para Quarkus?

LangChain4j. Quarkus dispone de una extensión propia de LangChain4j con dev services para levantar modelos locales y almacenes vectoriales, Dev UI y compilación nativa probada. Spring AI está diseñado para Spring Boot y no aplica en Quarkus.

¿Spring AI 2.0 es compatible con Spring Boot 3?

No. Spring AI 2.0 está diseñado para Spring Boot 4.0/4.1 y Spring Framework 7.0, con Jackson 3 y Java 17 como mínimo. Para Spring Boot 3 siguen manteniéndose las ramas 1.0.x y 1.1.x con parches, pero sin las novedades de 2.0 como el ToolCallingAdvisor unificado o el MCP Java SDK 2.0.

¿Qué framework tiene mejor soporte de MCP en Java?

Como cliente, ambos: LangChain4j 1.19 está alineado con la revisión 2026-07-28 de la especificación y Spring AI 2.0 integra el MCP Java SDK 2.0. Como servidor —exponer sistemas Java a agentes—, Spring AI ofrece un modelo de anotaciones (@McpTool, @McpResource, @McpPrompt), transporte Streamable HTTP por defecto, seguridad OAuth 2.0 y métricas OpenTelemetry. LangChain4j delega el lado servidor en el ecosistema Quarkus.

¿Cuál es mejor para construir agentes de IA en Java?

Depende de qué entiendas por agente. Para un bucle de herramientas con memoria y control de flujo en tu propio código, cualquiera de los dos sirve, y Spring AI 2.0 aporta un bucle unificado con divulgación progresiva de herramientas. Para patrones multiagente de serie —secuencia, paralelo, bucle, supervisor, planner, human-in-the-loop con reanudación—, LangChain4j tiene un módulo agentic específico, aunque todavía versionado como beta.

¿Cuándo no necesito ningún framework de IA en Java?

Cuando la integración es una o dos llamadas a un único proveedor sin herramientas, RAG ni memoria: clasificar, resumir, extraer campos. En ese caso el SDK Java oficial del proveedor, un cliente HTTP o el RestClient de Spring con tipos propios es más simple, más estable y sin dependencias adicionales. El framework empieza a compensar cuando aparecen herramientas, recuperación, memoria multiusuario u orquestación; la abstracción se paga solo cuando aporta valor.

  • Leer artículo
    Desarrollo con IA17 min

    Código generado por IA y ciberseguridad: el nuevo reto del desarrollo de software

  • Leer artículo
    Arquitecturas IA17 min

    MCP vs RAG: cuándo tu agente necesita recuperar conocimiento y cuándo necesita ejecutar herramientas

  • Leer artículo
    AI Act y cumplimiento16 min

    Multas del AI Act: qué arriesga tu empresa desde el 2 de agosto de 2026 y quién vigila en España

Ver todos los artículos