作为一名深耕Java生态多年的开发者,你是否也曾羡慕Python程序员在AI领域的游刃有余?别急,2026年的春天,Java终于迎来了一场漂亮的翻身仗。Google开源的Gemma 4模型,搭配LangChain4j和Ollama,让你用Maven几行配置就能在本地跑起大模型。本文手把手教你实现,让Java应用像调用Spring Bean一样丝滑调用AI。

为什么Java程序员不再需要“AI自卑”

“AI开发必须用Python”这句话,曾让无数Java开发者感到焦虑。但技术生态正在悄然改变。Google DeepMind开源的Gemma 4系列模型(从2B到31B四个版本),采用Apache 2.0许可证,完全商用友好。其中26B的MoE版本尤为惊艳——仅激活4B参数,就能媲美传统20B模型的效果,且显存需求更低。

更重要的是,Ollama对Gemma 4的官方支持,意味着Java开发者无需处理复杂的模型加载逻辑。结合成熟的LangChain4j框架,我们完全可以在Java生态内闭环解决AI需求,无需引入Python或C++。这对于追求稳定性和企业级架构的团队来说,简直是天赐良机。

技术选型:为什么LangChain4j比Spring AI更合适?

Spring AI固然是官方亲儿子,但截至2026年初,其在本地模型部署方面的成熟度仍不及LangChain4j(LC4j)。LC4j的优势体现在:

  • 模型支持丰富:从OpenAI、Anthropic到Ollama、LocalAI,甚至Docker Model Runner,一应俱全。
  • 社区活跃:GitHub Star数持续攀升,文档质量远超Spring AI。
  • Spring Boot集成完美:有专门的starter,写法与Spring AI几乎一致,迁移成本极低。

最关键的是,LC4j对Ollama的支持是无缝的。而Ollama,是目前本地运行Gemma 4最省心的方案——它就像“模型快递站”,自动下载模型并启动HTTP服务(默认端口11434),等着Java程序来取件。

⚙️ 环境准备:5分钟搞定Ollama与Gemma 4

1. 安装Ollama

Mac/Linux用户直接在终端执行安装命令:

curl -fsSL https://ollama.com/install.sh | sh

Windows用户前往官网下载安装包,一路“下一步”即可。

2. 拉取Gemma 4模型

建议先从4B版本开始试水(大多数笔记本8-16GB显存即可):

ollama pull gemma4:4b

如果你想体验MoE版本的“以小博大”:

ollama pull gemma4:26b

⚠️ 首次拉取需要下载数GB文件,建议趁喝咖啡或与产品经理“友好交流”时进行。

3. 验证服务

ollama run gemma4:4b

如果看到交互式命令行,输入“你好”测试中文回应。按Ctrl+D退出。

Maven配置:三行依赖打通AI通道

打开你的Spring Boot项目(Java 17+),在pom.xml中加入:

    dev.langchain4j
    langchain4j-spring-boot-starter
    1.4.0

仅两个依赖,版本对齐即可。没有Python的conda环境、没有CUDA版本匹配、没有PyTorch与TensorFlow的“爱恨情仇”。这就是Java生态的魅力——约定大于配置,稳定压倒一切。

代码实战:比写Controller还简单

配置文件

在application.properties中设置:

langchain4j.ollama.chat-model.base-url=http://localhost:11434
langchain4j.ollama.chat-model.model-name=gemma4:4b
langchain4j.ollama.chat-model.temperature=0.7
langchain4j.ollama.chat-model.timeout=PT120S

冷启动可能较慢,timeout建议设120秒以上,避免SocketTimeoutException。

定义AI服务接口

LC4j最骚的操作:只需定义接口,实现由框架自动生成:

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.spring.AiService;
@AiService
public interface JavaCodeAssistant {
@SystemMessage("你是一位资深的Java架构师,拥有15年企业级开发经验。回答问题时请给出具体的代码示例,并解释最佳实践。")
String ask(String question);
}

@SystemMessage 设定AI“人设”,@AiService 让Spring自动生成实现类。这种声明式编程,比Spring Data JPA还爽。

Controller层调用

@RestController
@RequestMapping("/api/ai")
public class AIController {
@Autowired
private JavaCodeAssistant assistant;
@GetMapping("/ask")
public ResponseEntity ask(@RequestParam String question) {
String answer = assistant.ask(question);
return ResponseEntity.ok(answer);
}
}

启动应用,浏览器访问:

http://localhost:8080/api/ai/ask?question=如何用Java 21的虚拟线程优化高并发场景?

Gemma 4会为你写出从ExecutorService到StructuredTaskScope的完整代码。此时,你可以截图发给Python算法同事:“看,Java也能本地跑大模型!”

进阶玩法:RAG让AI读懂你的代码库

如果想让AI帮你改bug、写注释,需要RAG(检索增强生成)。原理是给AI配一个“外接大脑”——将代码库切碎存入向量数据库,提问时先检索相关片段再喂给模型。LC4j内置内存向量存储,测试极方便:

import dev.langchain4j.data.document.parser.TextDocumentParser;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import static dev.langchain4j.data.document.splitter.DocumentSplitters.recursive;
// 加载你的代码文件
List documents = FileSystemDocumentLoader.loadDocuments("/path/to/your/src", new TextDocumentParser());
// 创建内存向量库(生产环境换成Chroma或Milvus)
InMemoryEmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>();
  // 分割并入库
  EmbeddingStoreIngestor ingestor = EmbeddingStoreIngestor.builder()
  .documentSplitter(recursive(500, 0))
  .embeddingStore(embeddingStore)
  .build();
  ingestor.ingest(documents);
  // 在Assistant里加上ContentRetriever
  @Bean
  JavaCodeAssistant createAssistant(ChatLanguageModel model) {
  return AiServices.builder(JavaCodeAssistant.class)
  .chatLanguageModel(model)
  .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore))
  .build();
  }

现在,你可以问:“UserService类是干嘛的?” AI会先检索UserService.java内容,再结合推理能力给出解释。这就像给新员工配了一位24小时在线、永不疲倦的技术导师。

[AFFILIATE_SLOT_1]

性能调优:让Gemma 4在你的笔记本上飞起来

本地跑大模型,最怕“一核有难,八核围观”。优化策略如下:

Ollama侧优化

  • 使用量化版本(如Q4_K_M):
  • ollama pull gemma4:4b-q4_0
  • 限制并发数:
  • export OLLAMA_NUM_PARALLEL=1
    export OLLAMA_MAX_LOADED_MODELS=1

Java侧优化

@Bean
ChatLanguageModel chatLanguageModel() {
return OllamaChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("gemma4:4b")
.timeout(Duration.ofSeconds(120))
.build();
}

若有多张显卡,Ollama会自动分配,Java端无需修改。这就是抽象层的魅力——复杂留给自己,简单留给用户。

⚠️ 避坑指南:血泪教训总结

  • 中文乱码:Ollama启动时加 OLLAMA_ORIGINS=* 环境变量,或升级到最新版。
  • 内存溢出:4B模型需至少8GB内存,26B建议32GB+。16GB硬跑26B可能触发OOM Killer。
  • 上下文长度:Gemma 4支持128K-256K上下文,但Ollama默认可能未开大。在Modelfile中调整 num_ctx 参数。
  • 首次加载慢:应用启动后做“预热调用”:
  • @EventListener(ApplicationReadyEvent.class)
    public void warmUp() {
    // 启动时预热,避免用户第一次访问等待
    assistant.ask("你好");
    }
[AFFILIATE_SLOT_2]

结语:Java+AI的未来已来

Gemma 4 + LangChain4j + Ollama的组合,为Java开发者提供了完全在生态内闭环的AI解决方案。数据安全(本地运行)、成本控制(零API费用)、响应速度(毫秒级延迟),这三张王牌足以说服任何技术领导。别再纠结“要不要转Python搞AI”了,拿起Maven,让Gemma 4在你的Spring Boot应用里跑起来吧。毕竟,能驾驭企业级复杂业务逻辑的程序员,没理由搞不定AI。