Im Bereich der generativen KI ist es ein ungeschriebenes Gesetz: Wer LLMs integrieren will, muss Python schreiben. Das riesige Ökosystem aus PyTorch, LangChain und Hugging Face macht es dem Java-Entwickler oft nicht leicht. Daher habe ich mich in den letzten Jahren auch sehr viel mit Python Themen beschäftigt, aber meine bevorzugte Programmiersprache ist und bleibt Java.
Und das aus guten Gründen. Während Python für schnelles Prototyping und Skripte in Notebooks unschlagbar ist, vermisse ich dort oft die Robustheit, die ich für echte Produktionssysteme benötige. In Java gibt mir das statische Typsystem eine Sicherheit, die Python einfach nicht bieten kann. Wenn der Compiler keine Fehler ausgibt, habe ich bereits eine erste Garantie, dass die Typen passen – in Python erfahre ich von Typ-Fehlern oft erst zur Laufzeit, wenn der Code crasht.
Dazu kommt das unvergleichliche Tooling. Das Refactoring in einer IDE wie IntelliJ und Eclipse ist in der Java-Welt besonders wertvoll. Wo ich in Python-Projekten oft mit Dependency-Höllen und virtuellen Umgebungen kämpfe, bietet mir das Maven-Ökosystem in Kombination mit Spring Boot eine stabile, standardisierte Basis, die auch in vielen Jahren noch wartbar ist.
Mit LangChain4J möchte ich nun versuchen, die Power der LLMs in dieses stabile Umfeld zu integrieren, denn mit LangChain4J gibt es eine, Java-native Antwort, die die Lücke zwischen Enterprise-Anwendungen und Large Language Models schließt.
Ich werde also die nächsten Wochen nutzen, um LangChain4J von Grund auf zu lernen – auch wenn ich in der Vergangenheit schon ein paar kleinere Projekte mit LangChain4J implementiert habe. Dabei werde ich folgende Rahmenbedingungen voraussetzen.
- Privacy First (Localhost Only)
Keine API-Keys, keine Cloud-Kosten, keine Daten, die meinen Rechner verlassen. Ich werde ausschließlich mit lokalen Modellen (Mistral, Qwen und Deepseek) arbeiten, gehostet via llama.cpp auf meinem HP ZBook Ultra 14 Zoll G1a Notebook. Dank der 128GB Unified-Memory habe ich die Möglichkeit, hier auch größere Modelle laufen zu lassen. Ich werde KI-Features bauen, die auch im Flugzeugmodus funktionieren und 100% sicher sind. - Vibe Coding
Ich werde versuchen, den Code nicht mehr Zeichen für Zeichen selbst zu schreiben. Stattdessen nutze ich KI-gestützte Workflows mit Claude-Code. Damit habe ich bisher keinerlei Erfahrungen, also mal sehen, wie das so funktioniert ….
Voraussetzungen & Installation
- llama.cpp
Wichtigste Voraussetzung ist llama.cpp. Man kann es unter https://github.com/ggml-org/llama.cpp finden und unter Windows, Linux und MacOS installieren. - Modell laden
Folgende Modell werden verwendet. Falls sich im Laufe der Zeit herausstellt, dass noch weitere Modell benötigt werden, können sie später nachinstalliert werden.
qwen3:30bministral-3:3b(Ein winziges Modell zum schnellen Testen).moondream(Für Bilderkennung).nomic-embed-text(Fur Embeddings)
- Java/IDE
Java 21 + IntelliJ + Gradle (wie gehabt). - Qdrant Vektor Datenbank
Der Docker Container https://hub.docker.com/r/qdrant/qdrant ist schnell und einfach installiert, wenn Docker läuft. Das beste daran, wenn man keine Volumes angibt, sind alle Daten nach dem Restart weg und man kann mit einer frischen Instanz arbeiten (Nicht geeignet für produktive Umgebungen) - Alles weitere werde ich dann sehen, wenn ich es brauche und im Rahmen der Beispiele installieren.
Der Plan ist es, in ca. 30 Tagen (Dieses mal mache es es etwas lockerer, da ich keinen Grund sehe, mich zu stressen und zwingend jeden Tag eine Übung zu machen) die Konzepte und Ideen von LangChain4j zu lernen und sie anhand praxisnaher Miniprojekte konsequent umzusetzen, sodass eine gute Grundlage für eine spätere Nutzung von LangChain4j in größeren Projekten leichter möglich ist. Es stellt sich mir zwar die Frage, ob das heute noch einen Wert hat, da Google AI Studio, ChatGPT oder Claude Opus vermutlich unerreichbar darin sind, aber schaden kann es ja auch nicht.
Bei den Übungen und Beispielen werde ich mich an den Beispielen wie unter https://github.com/langchain4j/langchain4j-examples zu sehen orientieren. Mal sehen, was ich in 30 Tagen so erreichen kann.
Also dann mal los 🙂
