Java Moderno com IA: LangChain4j, Quarkus, RAG e MCP na Prática Enterprise The Java ecosystem is formalizing AI in production with stable contracts. LangChain4j provides a Java-native LLM orchestration layer with declarative annotations and seamless integration with Quarkus and Spring Boot. RAG (Retrieval-Augmented Generation) enables context injection from proprietary data without fine-tuning, while MCP (Model Context Protocol) standardizes tool and data boundaries. Quarkus 3.37's default reflection-free Jackson serialization and the A2A Java SDK reaching GA further solidify the production-ready stack. O ecossistema Java está formalizando IA em produção. Este artigo apresenta os blocos concretos de construção para quem quer sair do protótipo e chegar ao contrato estável. Antes de entrar no código, vale nomear o momento. Na sua newsletter de junho de 2026, o professor Elder Moraes — referência no ecossistema Java e criador do Método Java AI Specialist — sintetizou com precisão o que está acontecendo na plataforma: "O ecossistema Java está colocando estrutura formal em volta do que já roda em produção: padrão de interop, governança de contribuição, default de framework." — Elder Moraes, Newsletter Java Weekly, jun. 2026 eldermoraes.ai A leitura do professor Moraes é precisa e serve como bússola para este artigo. O A2A Java SDK atingiu GA 1.0.0.Final , o Quarkus 3.37 ativou serialização Jackson livre de reflexão por padrão, e o próprio OpenJDK teve que legislar sobre código gerado por IA — um sinal de que a adoção já acontece em escala. O trabalho do desenvolvedor agora não é mais avaliar se usar IA em Java, mas saber como construir em cima do que já é contrato estável. Este artigo trata exatamente disso: os três pilares concretos que você pode colocar em produção hoje — LangChain4j como camada de orquestração de LLM, RAG Retrieval-Augmented Generation como estratégia de contexto, e MCP Model Context Protocol como borda de tool e dados. LangChain4j é a port Java do ecossistema LangChain, mas construída com idioma Java de verdade: anotações declarativas, integração nativa com Spring Boot e Quarkus, e suporte a múltiplos provedores de LLM OpenAI, Anthropic, Ollama, Azure OpenAI, Bedrock, entre outros trocáveis via configuração, sem alterar a lógica de negócio. O conceito central é o AI Service : uma interface Java anotada que o framework implementa em tempo de build ou runtime , abstraindo o ciclo completo de prompt, chamada ao modelo e parse da resposta. // Declaração da interface — tudo que o dev precisa escrever @RegisterAiService retriever = EmbeddingStoreRetriever.class public interface DocumentAssistant { @SystemMessage "Você é um assistente especialista em regulatório financeiro." @UserMessage "Com base nos documentos disponíveis, responda: {{question}}" String answer @V "question" String question ; } Com Quarkus, a extensão quarkus-langchain4j injeta o serviço via CDI, resolve o provider de LLM pelo application.properties , e aplica os ganhos de native image automaticamente — incluindo o flip de Jackson reflection-free que o Quarkus 3.37 ativou por padrão, reduzindo cold start e consumo de heap sem nenhuma mudança no código da aplicação. application.properties quarkus.langchain4j.ollama.base-url=http://localhost:11434 quarkus.langchain4j.ollama.chat-model.model-id=llama3 quarkus.langchain4j.ollama.embedding-model.model-id=nomic-embed-text quarkus.langchain4j.ollama.timeout=60s Para produção, troca-se o bloco ollama por openai ou anthropic sem tocar em nenhuma linha Java. Esse isolamento é o primeiro contrato estável que o arquiteto precisa firmar: a lógica de negócio nunca deve conhecer o provedor de LLM. Modelos de linguagem sabem muito, mas não sabem nada sobre os seus dados. RAG — Retrieval-Augmented Generation — é o padrão que resolve isso: em vez de treinar ou fazer fine-tuning caro e lento , você recupera os fragmentos mais relevantes dos seus próprios dados no momento da pergunta e os injeta no contexto do prompt. O pipeline tem três etapas fixas: ingestão parse e chunking dos documentos , indexação geração de embeddings e armazenamento em vector store e recuperação busca por similaridade no momento da query . LangChain4j cobre todas as três com APIs unificadas. @ApplicationScoped public class DocumentIngestionService { @Inject EmbeddingModel embeddingModel; @Inject EmbeddingStore