<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Open Source on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/categories/open-source/</link><description>Recent content in Open Source on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Mon, 27 Apr 2026 07:00:47 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/categories/open-source/index.xml" rel="self" type="application/rss+xml"/><item><title>LangChain</title><link>https://javapro.svenruppert.com/langchain/</link><pubDate>Mon, 27 Apr 2026 07:00:47 +0000</pubDate><guid>https://javapro.svenruppert.com/langchain/</guid><description>&lt;p&gt;&lt;strong&gt;LangChain Requests, Prompt Tempates &amp;amp; Output Parser&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/03/lang_2-1024x585.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unsere LLM-Serie&lt;/strong&gt; hat sich in den letzten drei Artikeln jeweils einem zentralen Thema beim programmatischen Zugriff auf Large Language Models gewidmet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie kann ich via REST API Anfragen an eine LLM stellen?  Artikel &lt;strong&gt;&lt;a href="https://javapro.io/de/ollama-rest-api"&gt;Ollama REST API&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wie führe ich vollständige Chat-Verläufe mit einer LLM über den Context?  Artikel &lt;strong&gt;&lt;a href="https://javapro.io/de/llm-context"&gt;LLM Context&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wie stelle ich einer LLM Funktionen zur Verfügung, damit sie bessere Antworten erzeugen kann?  Artikel &lt;strong&gt;&lt;a href="https://javapro.io/de/llm-context-und-tools"&gt;LLM Context und Tools&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In all diesen Artikeln haben wir die Konzepte bewusst mit purem Python und Java implementiert – ganz ohne zusätzliche AI-Libraries. Die nächsten Artikel zeigen nun, wie sich dieselben Probleme mithilfe spezialisierter Bibliotheken eleganter und effizienter umsetzen lassen. Dieser und der nächste Artikel fokussieren sich auf die Implementierung in Python. Ein weiterer Artikel wird sich anschliessend den entsprechenden Java-Lösungen widmen.&lt;/p&gt;</description></item><item><title>URLShortener - Simple Bulk Creation</title><link>https://javapro.svenruppert.com/urlshortener-simple-bulk-creation/</link><pubDate>Wed, 22 Apr 2026 07:06:24 +0000</pubDate><guid>https://javapro.svenruppert.com/urlshortener-simple-bulk-creation/</guid><description>&lt;p&gt;Die Erzeugung von Kurzlinks wirkt auf den ersten Blick wie ein ausgesprochen einfacher Anwendungsfall. Eine Zieladresse wird eingegeben; das System erzeugt einen Shortcode, der unmittelbar verwendet werden kann. Solange sich dieser Ablauf auf einzelne Links beschränkt, bleibt die Benutzerführung überschaubar. Mit dem Übergang zur Massenanlage verändert sich die Situation jedoch grundlegend. Aus einer einzelnen Eingabe wird ein Arbeitsprozess, in dem mehrere URLs gleichzeitig erfasst, geprüft, bewertet und schließlich erzeugt werden müssen. Genau an diesem Punkt reicht es nicht mehr aus, eine bestehende Erfassungsmaske lediglich um weitere Eingabemöglichkeiten zu ergänzen. Je größer die Menge der zu verarbeitenden URLs wird, desto stärker rückt die Führung durch den Prozess in den Mittelpunkt.&lt;/p&gt;</description></item><item><title>Vaadin Signals - Since 25.1 - Teil 2</title><link>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-2/</link><pubDate>Wed, 15 Apr 2026 07:16:02 +0000</pubDate><guid>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-2/</guid><description>&lt;h2 id="nebenläufigkeit--thread-sicherheit"&gt;Nebenläufigkeit &amp;amp; Thread-Sicherheit&lt;/h2&gt;
&lt;p&gt;Die Sicherheit von Threads ist das Erste, was erfahrene Java-Entwickler hinterfragen, wenn sie auf eine neue Abstraktion stoßen. Signals gehen diese Frage mit zwei grundlegend unterschiedlichen Ansätzen an, je nachdem, ob der Bundesstaat sitzungslokal oder sitzungsweit ist.&lt;/p&gt;
&lt;p&gt;Lokale Signale haben eine eigene Sperre, die das Lesen und Schreiben zwischen dem UI-Thread einer Sitzung und den von dieser Sitzung ausgelösten Hintergrundaufgaben koordiniert. Daher ist jeder, der in derselben Sitzung ein ValueSignal aus einem CompletableFuture-Callback schreibt, sicher.&lt;/p&gt;</description></item><item><title>Vaadin Signals - Since 25.1 - Teil 1</title><link>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-1/</link><pubDate>Tue, 14 Apr 2026 07:13:07 +0000</pubDate><guid>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-1/</guid><description>&lt;h2 id="motivation-was-war-bisher-das-problem"&gt;Motivation: Was war bisher das Problem?&lt;/h2&gt;
&lt;p&gt;Jeder, der schon längere Zeit mit Vaadin Flow arbeitet, kennt zwei Arten von Schmerz – und beide werden angesprochen.&lt;/p&gt;
&lt;p&gt;Das Erste ist offensichtlich: Eine Hintergrundoperation schreibt Daten, mehrere Browser-Tabs müssen synchronisiert werden, und plötzlich bist du tief in UI.access(), @Push und der Frage, warum Tab B nicht reagiert, obwohl Tab A gerade etwas geschrieben hat.&lt;/p&gt;
&lt;p&gt;Die zweite ist subtiler, aber grundlegender: Selbst in rein lokalem, Einzelbenutzer-UI-Code – einem Formular, einem Einkaufswagen, einer detaillierten Ansicht – ist der Zustand über Komponentenvariablen verteilt, manuell synchronisiert und zwingend verwaltet. Wenn sich ein Wert ändert, ruft man component.setValue() auf, was ein Label aktualisiert und den Status des Buttons festlegt. Der Entwickler koordiniert, was geändert werden muss – nicht das Framework.&lt;/p&gt;</description></item><item><title>Url-Shortener - Redirect-Statistiken - Teil 2</title><link>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-2/</link><pubDate>Thu, 09 Apr 2026 07:05:03 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-2/</guid><description>&lt;h2 id="die-vaadin-ui-komponenten-im-detail"&gt;Die Vaadin-UI-Komponenten im Detail&lt;/h2&gt;
&lt;p&gt;In diesem Teil geht es nun weiter mit der Implementierung von den Redirect-Statistiken in dem Open Source Tool URL-Shortener. Den ersten Teil findest Du hier: &lt;strong&gt;&lt;a href="https://3g3.eu/Hfzsf3"&gt;https://3g3.eu/Hfzsf3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte findest Du auf GitHub unter&lt;/strong&gt; &lt;a href="https://3g3.eu/url"&gt;&lt;strong&gt;https://3g3.eu/url&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/04/image-4-1024x382.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="die-komponentenarchitektur"&gt;Die Komponentenarchitektur&lt;/h3&gt;
&lt;p&gt;Die Vaadin-UI für die Statistik-Funktionalität besteht aus mehreren eng verzahnten, aber bewusst entkoppelten Komponenten. Im Zentrum stehen zwei Views: die StatisticsView als Übersichtsseite und die StatisticsDetailView für die Analyse einzelner ShortCodes. Beide nutzen die wiederverwendbare StatisticsToolbar für Datumsauswahl und Granularitätssteuerung. Diese Trennung folgt dem Prinzip der Komposition über Vererbung – ein Muster, das sich in Vaadin-Anwendungen bewährt hat.&lt;/p&gt;</description></item><item><title>Url-Shortener - Redirect-Statistiken - Teil 1</title><link>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-1/</link><pubDate>Tue, 07 Apr 2026 12:59:48 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-1/</guid><description>&lt;h3 id="redirect-statistiken-in-vaadin-flow-vom-event-bis-zur-visualisierung"&gt;Redirect-Statistiken in Vaadin Flow: Vom Event bis zur Visualisierung&lt;/h3&gt;
&lt;p&gt;Ein URL-Shortener erfüllt auf den ersten Blick eine triviale Aufgabe: Er nimmt eine lange URL entgegen und liefert eine kurze zurück. Der eigentliche Wert entsteht jedoch erst durch das, was nach dem Erstellen passiert – nämlich die Nutzung. Wie oft wird ein Link aufgerufen? Zu welchen Tageszeiten? Über welchen Zeitraum verteilt? Diese Fragen sind nicht nur aus Neugier interessant, sondern bilden die Grundlage für fundierte Entscheidungen. Wer einen Link in einer Kampagne einsetzt, möchte wissen, ob die Kampagne funktioniert. Wer einen Link intern teilt, möchte verstehen, ob die Zielgruppe ihn überhaupt nutzt.&lt;/p&gt;</description></item><item><title>Ein Vaadin-Starterprojekt mit klarem Fokus</title><link>https://javapro.svenruppert.com/ein-vaadin-starterprojekt-mit-klarem-fokus/</link><pubDate>Wed, 18 Mar 2026 07:04:21 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-vaadin-starterprojekt-mit-klarem-fokus/</guid><description>&lt;p&gt;Viele Beispielprojekte überfrachten den Einstieg, weil sie zu viele Themen gleichzeitig aufzeigen. Routing, Datenzugriff, Security, Formulare, Theme-Anpassungen und weitere Integrationen werden dann in einer einzigen Demo dargestellt. Für Leser wird es dadurch schwieriger, den eigentlichen Aufbau des Projekts zu erkennen.&lt;/p&gt;
&lt;p&gt;Dieses Projekt verfolgt einen anderen Ansatz. Im Mittelpunkt steht ein kompaktes Gerüst aus AppShell, MainLayout, mehreren Views, einem kleinen Service, einem eigenen Theme und vorbereiteter Internationalisierung. Ziel ist es, die grundlegenden Bausteine einer Vaadin-Flow-Anwendung so sichtbar zu machen, dass ihr Zusammenspiel nachvollziehbar bleibt.&lt;/p&gt;</description></item><item><title>Internationalisierung (i18n) in einer Vaadin-Anwendung</title><link>https://javapro.svenruppert.com/internationalisierung-i18n-in-einer-vaadin-anwendung/</link><pubDate>Wed, 11 Mar 2026 07:06:19 +0000</pubDate><guid>https://javapro.svenruppert.com/internationalisierung-i18n-in-einer-vaadin-anwendung/</guid><description>&lt;p&gt;Moderne Webanwendungen werden selten nur von Benutzern derselben Sprache verwendet. Selbst interne Werkzeuge erreichen häufig internationale Teams oder werden in verschiedenen Ländern eingesetzt. Eine mehrsprachige Benutzeroberfläche ist daher keine Luxusfunktion, sondern ein wichtiger Bestandteil der Benutzerfreundlichkeit.&lt;/p&gt;
&lt;p&gt;Auch das Open‑Source‑Projekt URL‑Shortener profitiert von einer klaren Internationalisierungsstrategie. Die Anwendung richtet sich an Entwickler, Administratoren und andere Benutzer, die Links verwalten, analysieren oder verteilen möchten. Damit die Oberfläche unabhängig von der Herkunft der Benutzer verständlich bleibt, unterstützt die Anwendung mehrere Sprachen.&lt;/p&gt;</description></item><item><title>Schluss mit YAML: Cloud-Infrastruktur in purem Java definieren, testen und deployen</title><link>https://javapro.svenruppert.com/schluss-mit-yaml-cloud-infrastruktur-in-purem-java-definieren-testen-und-deployen/</link><pubDate>Mon, 09 Mar 2026 07:03:25 +0000</pubDate><guid>https://javapro.svenruppert.com/schluss-mit-yaml-cloud-infrastruktur-in-purem-java-definieren-testen-und-deployen/</guid><description>&lt;p&gt;Als Java-Entwickler brüsten wir uns gerne mit professioneller, ingenieursmäßiger Entwicklung: Typsicherheit, Unit-Tests, Refactoring, Code-Reviews. Dann müssen wir ein Deployment durchführen und schreiben plötzlich hunderte Zeilen YAML, akzeptieren mangelnde Ausdrucksstärke, fehlende Abstraktionen und fehlende Flexibilität als alternativlos. Oder schlimmer: Wir loggen uns in die Cloud-Konsole ein und klicken uns zum Deployment durch.&lt;/p&gt;
&lt;p&gt;Dieser Artikel möchte eine Alternative vorstellen: Cloud-Infrastruktur in Java definieren, mit denselben Werkzeugen und Best Practices, die wir für Anwendungscode verwenden. Wir bauen ein funktionierendes Beispiel: einen Java-Service, der auf AWS ausgerollt wird, und decken den gesamten Lebenszyklus ab: von der Ressourcendefinition über Tests bis hin zu CI/CD. Das Beispiel verwendet Quarkus, die gezeigten Infrastruktur-Patterns lassen sich aber genauso auf Spring Boot, Jakarta EE oder jedes andere containerisierte Java-Framework anwenden. Der begleitende Code ist hier verfügbar: &lt;a href="https://github.com/wlami/stop-writing-yaml-javapro"&gt;github.com/wlami/stop-writing-yaml-javapro&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Saubere Styles in Vaadin: CSS statt getStyle().set()</title><link>https://javapro.svenruppert.com/saubere-styles-in-vaadin-css-statt-getstyle-set/</link><pubDate>Wed, 04 Mar 2026 13:25:41 +0000</pubDate><guid>https://javapro.svenruppert.com/saubere-styles-in-vaadin-css-statt-getstyle-set/</guid><description>&lt;p&gt;Vaadin Flow ermöglicht es, komplette Webanwendungen ausschließlich in Java zu entwickeln. Komponenten, Layouts, Navigation und sogar komplexe UI-Strukturen lassen sich serverseitig modellieren, ohne direkt mit HTML oder JavaScript arbeiten zu müssen. Dieser Ansatz ist einer der Hauptgründe, warum Vaadin besonders in Java-zentrierten Projekten beliebt ist.&lt;/p&gt;
&lt;p&gt;Mit zunehmender Größe eines Projekts entsteht jedoch ein typisches Problem: Styling wird häufig direkt im Java-Code vorgenommen. Vaadin erlaubt dies bequem über die Methode getStyle().set(&amp;hellip;). Dadurch lassen sich Abstände, Farben oder Layout-Eigenschaften schnell anpassen. In kleinen Prototypen wirkt dieses Vorgehen zunächst harmlos und sogar praktisch.&lt;/p&gt;</description></item><item><title>Ein unerwartet problemloses Upgrade</title><link>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</link><pubDate>Wed, 18 Feb 2026 07:05:47 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</guid><description>&lt;p&gt;Der Ausgangspunkt für diesen Artikel war kein strategischer Architektur‑Workshop und kein langfristig geplanter Migrationspfad, sondern ein vergleichsweise unspektakulärer Schritt: die Aktualisierung der Versionsnummern im bestehenden Projekt. Im Rahmen der Weiterentwicklung meines URL‑Shortener‑Projekts stand ohnehin ein reguläres Dependency‑Update an. Vaadin 25 ( &lt;a href="https://3g3.eu/vdn25"&gt;&lt;strong&gt;https://3g3.eu/vdn25&lt;/strong&gt;&lt;/a&gt; ) war zu diesem Zeitpunkt bereits verfügbar – also lag es nahe, den Schritt einfach zu gehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte zu dem Projekt befinden sich&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;auf GitHub unter&lt;/strong&gt; &lt;a href="https://3g3.eu/url"&gt;&lt;strong&gt;https://3g3.eu/url&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/02/image-11-1024x632.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Die Erwartungshaltung war dabei realistisch, vielleicht sogar leicht skeptisch. Ein neues Major‑Release, neue Mindestanforderungen, ein modernisierter Stack – all das sind üblicherweise gute Gründe, zumindest mit kleineren Anpassungen oder ersten Reibungen zu rechnen. Entsprechend gering war die Hoffnung, dass ein einfaches Hochziehen der Versionsnummern tatsächlich ausreichen könnte.&lt;/p&gt;</description></item><item><title>URL-Shortener - Import und Vaadin</title><link>https://javapro.svenruppert.com/url-shortener-import-und-vaadin/</link><pubDate>Wed, 11 Feb 2026 07:12:18 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-import-und-vaadin/</guid><description>&lt;h2 id="einordnung-warum-ein-import-überhaupt-eine-ui-braucht"&gt;Einordnung: Warum ein Import überhaupt eine UI braucht&lt;/h2&gt;
&lt;p&gt;Importfunktionen werden in Anwendungen häufig als rein technisches Detail betrachtet. Daten werden eingelesen, verarbeitet und stehen anschließend zur Verfügung – idealerweise ohne weitere Interaktion. In der Praxis ist ein Import jedoch selten ein unsichtbarer Vorgang. Er markiert einen Übergang zwischen bestehenden Systemzuständen, zwischen alten und neuen Daten, zwischen Vertrauen und Kontrolle. Genau an dieser Stelle entsteht die Notwendigkeit einer Benutzeroberfläche.&lt;/p&gt;
&lt;p&gt;Im URL-Shortener ist der Import nicht als Hintergrundprozess konzipiert, sondern als expliziter, sichtbarer Vorgang. Die UI übernimmt dabei nicht die Rolle eines fachlichen Entscheiders, sondern die eines transparenten Vermittlers. Sie schafft einen klar abgegrenzten Raum, in dem ein Import stattfinden kann, ohne bestehende Daten unmittelbar zu verändern. Allein diese Entkopplung rechtfertigt bereits die Existenz einer eigenen Import-Oberfläche.&lt;/p&gt;</description></item><item><title>URL-Shortener - JSON-Export in Vaadin Flow</title><link>https://javapro.svenruppert.com/url-shortener-json-export-in-vaadin-flow/</link><pubDate>Thu, 05 Feb 2026 16:10:28 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-json-export-in-vaadin-flow/</guid><description>&lt;p&gt;Exportfunktionen werden häufig als rein technische Nebenaufgabe betrachtet: ein Button, ein Download, fertig. In einer Vaadin-basierten Anwendung zeigt sich jedoch sehr schnell, dass der Export weit mehr ist als das Schreiben von Daten in eine Datei. Er ist eine direkte Verlängerung des UI-Zustands, ein infrastruktureller Vertrag zwischen Frontend und Backend – und ein entscheidender Faktor für Wartbarkeit und Vorhersagbarkeit.&lt;/p&gt;
&lt;p&gt;Dieser Artikel zeigt, wie im URL-Shortener-Projekt ein JSON-basierter Export bewusst als UI-getriebener Workflow gestaltet wurde. Der Fokus liegt dabei nicht auf Dateiformaten oder komplexen Backend-Abstraktionen, sondern auf der sauberen Einbettung des Exports in eine Vaadin-Flow-Oberfläche: Filterkopplung, Download-Mechanik, Paging-Grenzen und klare Verantwortlichkeiten zwischen UI, Client und Server.&lt;/p&gt;</description></item><item><title>LLM-Context und Tools</title><link>https://javapro.svenruppert.com/llm-context-und-tools/</link><pubDate>Mon, 12 Jan 2026 09:03:34 +0000</pubDate><guid>https://javapro.svenruppert.com/llm-context-und-tools/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/01/ollama_tools-1024x585.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Im letzten Artikel (&lt;a href="https://javapro.io/de/llm-context"&gt;https://javapro.io/de/llm-context&lt;/a&gt;) haben wir untersucht, wie LLMs mithilfe des Contexts ganze Chat-Verläufe verarbeiten können. Doch die Möglichkeiten des Contexts gehen weit darüber hinaus. In diesem Artikel schauen wir uns an, wie wir der LLM über den Context Funktionen bereitstellen können, um qualitativ hochwertigere Antworten zu erhalten. Dieses Konzept ist bekannt als &lt;strong&gt;LLM-Context und Tools&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vorbemerkungen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die Code-Beispiele basieren auf dem Wissen aus dem Artikel &lt;a href="https://javapro.io/de/llm-context"&gt;https://javapro.io/de/llm-context&lt;/a&gt;. Daher wäre es sinnvoll, zuerst diesen zu lesen.&lt;/li&gt;
&lt;li&gt;Alle Beispiele stehen in GitHub-Repos zur Verfügung.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="beispiel-kurzreise-nach-paris"&gt;Beispiel Kurzreise nach Paris&lt;/h2&gt;
&lt;p&gt;Wir möchten eine Kurzreise nach Paris machen und fragen uns, was wir da alles mitnehmen sollten. Im AI-Zeitalter starten wir Ollama mit dem Llama3.2-Modell und machen folgende Anfrage: &lt;strong&gt;What kind of clothes do I need for a short trip to Paris?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Komponenten extrahieren - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-komponenten-extrahieren-teil-2/</link><pubDate>Mon, 22 Dec 2025 07:06:42 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-komponenten-extrahieren-teil-2/</guid><description>&lt;h3 id="was-bisher-geschah"&gt;Was bisher geschah&lt;/h3&gt;
&lt;p&gt;Im ersten Teil lag der Fokus bewusst auf der strukturellen Neuausrichtung der Benutzeroberfläche. Die zuvor gewachsene, zunehmend monolithische &lt;code&gt;OverviewView&lt;/code&gt; wurde analysiert und gezielt entlastet, indem zentrale Funktionsbereiche in eigenständige UI-Komponenten ausgelagert wurden. Mit der Einführung der &lt;code&gt;BulkActionsBar&lt;/code&gt; und der &lt;code&gt;SearchBar&lt;/code&gt; entstanden klar abgegrenzte Bausteine, die jeweils eine definierte Verantwortung übernehmen und die View von operativer Detailarbeit befreien.&lt;/p&gt;
&lt;p&gt;Dieses Refactoring war kein kosmetischer Schritt, sondern eine bewusste Investition in die langfristige Wartbarkeit der Anwendung. Durch die Trennung von Darstellung, Interaktion und Logik wurde eine modulare Basis geschaffen, die nicht nur besser testbar ist, sondern auch zukünftige Erweiterungen deutlich vereinfacht. Die &lt;code&gt;OverviewView&lt;/code&gt; wandelte sich dabei von einem funktionsüberladenen Zentrum hin zu einer orchestrierenden Instanz, die Komponenten zusammenführt, statt deren interne Abläufe zu steuern.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Komponenten extrahieren - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-komponenten-extrahieren-teil-1/</link><pubDate>Sun, 21 Dec 2025 07:05:52 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-komponenten-extrahieren-teil-1/</guid><description>&lt;p&gt;Der heutige Tag unseres Adventskalenders markiert einen entscheidenden Schritt in der Weiterentwicklung der Benutzeroberfläche des URL-Shorteners. Nachdem in den vergangenen Tagen vor allem funktionale Erweiterungen im Vordergrund standen – von Filter- und Suchfunktionen bis hin zu Bulk-Operationen – widmet sich dieser Tag einem strukturellen Feinschliff: dem Refactoring zentraler UI-Komponenten. Dieses Refactoring dient nicht nur der Aufräumarbeit im Code, sondern schafft auch eine klare, modulare Basis für zukünftige Erweiterungen sowie eine deutlich verbesserte Developer Experience.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Aktiv-/Inaktiv-Modell - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-aktiv-inaktiv-modell-teil-2/</link><pubDate>Sat, 20 Dec 2025 07:05:25 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-aktiv-inaktiv-modell-teil-2/</guid><description>&lt;p&gt;Im ersten Teil dieses Beitrags wurde das neue Aktiv-/Inaktiv-Modell für Shortlinks eingeführt und auf architektonischer Ebene verankert. Ausgehend von der fachlichen Motivation wurde gezeigt, warum ein reines Ablaufdatum für moderne Anwendungsfälle nicht ausreicht und weshalb ein expliziter Aktivitätsstatus erforderlich ist.&lt;/p&gt;
&lt;p&gt;Darauf aufbauend wurden die technischen Grundlagen gelegt: Das Core-Domain-Modell wurde um das &lt;code&gt;active&lt;/code&gt;-Flag erweitert, die DTOs entsprechend angepasst und die Serialisierung so gestaltet, dass Abwärtskompatibilität gewährleistet bleibt. Ergänzend wurden die administrativen REST-Endpunkte erweitert, um den Aktivitätsstatus gezielt setzen, abfragen und filtern zu können. Auch das Redirect-Verhalten wurde präzisiert, sodass deaktivierte und abgelaufene Shortlinks über klar definierte HTTP-Status-Codes unterscheidbar sind.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Aktiv-/Inaktiv-Modell - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-aktiv-inaktiv-modell-teil-1/</link><pubDate>Fri, 19 Dec 2025 07:05:35 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-aktiv-inaktiv-modell-teil-1/</guid><description>&lt;h2 id="warum-ein-aktiv-inaktiv-modell-für-shortlinks"&gt;Warum ein Aktiv-/Inaktiv-Modell für Shortlinks?&lt;/h2&gt;
&lt;p&gt;Für viele Benutzer – insbesondere solche, die im Bereich der Softwareentwicklung arbeiten – sind Shortlinks weit mehr als nur einfache URL-Verkürzungen. Sie fungieren als flexible Weiterleitungsmechanismen für Kampagnen, Feature-Steuerungen, Testszenarien sowie interne Tools. Entsprechend hoch sind die Anforderungen an Transparenz, Steuerbarkeit und ein sauberes Lifecycle-Management.&lt;/p&gt;
&lt;p&gt;Der URL-Shortener erhält dafür ein Aktiv-/Inaktiv-Modell, das diese Ansprüche direkt unterstützt. Ein Benutzer kann nun für jeden Shortlink festlegen, ob dieser aktiv sein soll, temporär deaktiviert wird oder aufgrund eines geplanten Ablaufs keine Nutzer mehr erreichen darf. Gleichzeitig wird deutlich zwischen einem deaktivierten und einem abgelaufenen Shortlink unterschieden – sowohl in der UI als auch im http-Verhalten.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Minimaler Login Prozess - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-minimaler-login-prozess-teil-2/</link><pubDate>Thu, 18 Dec 2025 07:06:05 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-minimaler-login-prozess-teil-2/</guid><description>&lt;h2 id="was-bisher-geschah"&gt;Was bisher geschah..&lt;/h2&gt;
&lt;p&gt;Im ersten Teil von „Basic Login Solution“ wurde die Grundlage für einen bewusst einfachen, aber strukturell sauberen Admin-Login gelegt. Ausgangspunkt war die Erkenntnis, dass selbst ein technisch schlanker URL-Shortener eine klare Trennung zwischen öffentlichen Funktionen und administrativen Eingriffen benötigt. Ziel war dabei keine vollständige Benutzerverwaltung, sondern eine minimale Zugriffsschranke, die sich nahtlos in die bestehende Core-Java- und Vaadin-Architektur einfügt.&lt;/p&gt;
&lt;p&gt;Zentraler Baustein dieser Lösung ist eine schlanke, dateibasierte Konfiguration über &lt;em&gt;auth.properties&lt;/em&gt;. Mit nur zwei Parametern – einem Aktivierungsschalter und einem Passwort – lässt sich der Login vollständig steuern. Der zugehörige &lt;em&gt;LoginConfigInitializer&lt;/em&gt; stellt sicher, dass diese Konfiguration bereits beim Start des Servlet-Containers eingelesen wird und der Anwendung konsistent zur Verfügung steht. Damit ist klar definiert, ob und wie der Schutzmechanismus greift, noch bevor irgendeine UI gerendert wird.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Minimaler Login Prozess - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-minimaler-login-prozess-teil-1/</link><pubDate>Wed, 17 Dec 2025 07:05:17 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-minimaler-login-prozess-teil-1/</guid><description>&lt;p&gt;Das Administrations-Interface eines URL-Shorteners stellt einen sensiblen Bereich dar, in dem Kurzlinks geändert, entfernt oder mit Ablaufdaten versehen werden können. Obwohl das System in vielen Fällen auf einem internen Server oder im privaten Umfeld betrieben wird, bleibt der Schutz dieser Verwaltungsoberfläche ein grundlegender Sicherheitsfaktor. Ein versehentlicher Zugriff durch Unbefugte kann nicht nur zu falschen Weiterleitungen oder Datenverlust führen, sondern auch das Vertrauen in das Gesamtsystem beeinträchtigen.&lt;/p&gt;
&lt;p&gt;Mit der Einführung eines konfigurierbaren Login-Mechanismus wird erstmals eine klare Zugriffskontrolle geschaffen, die den Zugriff auf die Management-Funktionen bewusst vom restlichen System trennt. Der Login dient als leichtgewichtige Sicherheitsmaßnahme, die ohne externe Abhängigkeiten, ohne Frameworks und ohne aufwendige Benutzerverwaltung auskommt. Genau diese Einfachheit – ein einzelnes Passwort, eine einfache Konfigurationsdatei und ein zentrierter Login-Screen – macht die Lösung für kleine Deployments oder persönliche Projekte besonders attraktiv.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Massenoperationen im Grid - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-massenoperationen-im-grid-teil-2/</link><pubDate>Tue, 16 Dec 2025 07:05:16 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-massenoperationen-im-grid-teil-2/</guid><description>&lt;h2 id="was-bisher-geschah"&gt;Was bisher geschah…&lt;/h2&gt;
&lt;p&gt;Im vorherigen Teil wurde die Overview-Ansicht des URL-Shorteners grundlegend erweitert. Ausgangspunkt war die Erkenntnis, dass die bisherige UI stark auf Einzeloperationen ausgelegt war und damit schnell an ihre Grenzen stieß, sobald größere Mengen an Shortlinks verwaltet werden mussten. Um diesen Flaschenhals aufzulösen, wurde das Grid konsequent auf Mehrfachauswahl umgestellt, wodurch die technische Grundlage für echte Massenoperationen geschaffen wurde.&lt;/p&gt;
&lt;p&gt;Auf dieser Basis entstand eine kontextabhängige Bulk-Action-Leiste, die nur dann sichtbar wird, wenn tatsächlich eine Auswahl vorliegt. Sie fungiert als zentrales Steuerinstrument für alle Aktionen, die sich auf mehrere Einträge gleichzeitig beziehen, und bindet diese nahtlos in den bestehenden Arbeitsfluss aus Suche, Filterung und Grid-Interaktion ein. Entscheidend dabei war nicht die bloße Addition neuer Buttons, sondern die saubere Kopplung von UI-Zustand, Auswahl und Aktionserlaubnis.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Massenoperationen im Grid - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-massenoperationen-im-grid-teil-1/</link><pubDate>Mon, 15 Dec 2025 07:05:20 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-massenoperationen-im-grid-teil-1/</guid><description>&lt;p&gt;Die nächste Etappe des Adventskalenders widmet sich einer Weiterentwicklung, die unmittelbar spürbar wird, sobald man mehr Shortlinks nutzt. Die bisherigen Interaktionsmuster der Overview-Ansicht waren auf Einzeloperationen ausgerichtet und erlaubten nur sehr begrenzte Effizienzgewinne, wenn viele Objekte gleichzeitig bearbeitet werden sollten. Heute wird dieses Paradigma bewusst aufgebrochen und durch ein Zusammenspiel neuer UI-Konzepte ersetzt, das erstmals echte Mehrfachoperationen, kontextsensitives Arbeiten und eine deutlich stringenter gestaltete Benutzerführung ermöglicht.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte zu diesem Artikel befinden sich auf GitHub unter der folgenden URL:&lt;/strong&gt; &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-08"&gt;&lt;strong&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-08&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Von UI-Interaktionen zu einer deterministischen Refresh-Architektur</title><link>https://javapro.svenruppert.com/adventskalender-2025-von-ui-interaktionen-zu-einer-deterministischen-refresh-architektur/</link><pubDate>Sun, 14 Dec 2025 07:05:41 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-von-ui-interaktionen-zu-einer-deterministischen-refresh-architektur/</guid><description>&lt;p&gt;Nachdem im ersten Teil die konzeptionellen Grundlagen und das neue Zusammenspiel von globaler Suche, Such-Scopes und Advanced-Filters erläutert wurden, richtet sich der Fokus im zweiten Teil auf die technische Mechanik, die diese Interaktionen überhaupt stabil ermöglicht. Denn erst die überarbeitete Refresh-Architektur – allen voran das Zusammenspiel von &lt;code&gt;safeRefresh()&lt;/code&gt; und &lt;code&gt;RefreshGuard&lt;/code&gt; – sorgt dafür, dass die OverviewView trotz zahlreicher potenzieller Auslöser ruhig, deterministisch und vorhersehbar bleibt.&lt;/p&gt;
&lt;p&gt;Während der vorherige Teil also beschreibt, &lt;strong&gt;was&lt;/strong&gt; sich in der Benutzeroberfläche verändert hat und &lt;strong&gt;warum&lt;/strong&gt; diese Strukturierung notwendig war, zeigt Teil 2 nun im Detail, &lt;strong&gt;wie&lt;/strong&gt; die interne Zustandsmaschine arbeitet, wie konkurrierende UI-Ereignisse koordiniert werden und weshalb die View dadurch erst die gewünschte Robustheit erreicht.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Komplexe Suche</title><link>https://javapro.svenruppert.com/adventskalender-2025-komplexe-suche/</link><pubDate>Sat, 13 Dec 2025 07:05:13 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-komplexe-suche/</guid><description>&lt;p&gt;Die kontinuierliche Weiterentwicklung des URL-Shorteners konzentriert sich seit Beginn auf zwei Kernziele: eine robuste technische Basis ohne externe Frameworks und eine moderne, produktive Benutzeroberfläche, die sowohl intuitiv als auch für Power-User effizient bedienbar ist. Im Rahmen der aktuellen Entwicklungsstufe wurde ein wesentliches UI-Modul überarbeitet – die OverviewView, also die Ansicht, in der Benutzer sämtliche gespeicherten Verkürzungen durchsuchen, filtern und verwalten.&lt;/p&gt;
&lt;p&gt;In der vorherigen Version zeigte sich immer deutlicher, dass verschiedene Komponenten in der Suche und der Filterung voneinander entkoppelt waren. Die einfache Suche bot nur begrenzte Funktionalität, während die erweiterten Filter zwar vorhanden waren, jedoch nicht in einen echten Bedienfluss integriert waren. Darüber hinaus war das Zusammenspiel zwischen Benutzerinteraktionen wie dem Reset, der Änderung der Filter, dem Paging oder dem Öffnen der Detailansicht nicht ausreichend stabilisiert, was teilweise zu mehrfachen Refresh-Vorgängen oder widersprüchlichen UI-Zuständen führte.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Einführung multipler Aliasse - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-einfuehrung-multipler-aliasse-teil-2/</link><pubDate>Fri, 12 Dec 2025 07:05:11 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-einfuehrung-multipler-aliasse-teil-2/</guid><description>&lt;h2 id="was-bisher-geschehen-ist"&gt;Was bisher geschehen ist&amp;hellip;&lt;/h2&gt;
&lt;p&gt;Mit dem heutigen Update eröffnet sich im URL-Shortener ein weiterer, sehr praxisnaher Entwicklungsschritt. Nachdem die letzten Tage vor allem der UI-Verfeinerung und der besseren Strukturierung von Detaildialogen und der Formularlogik gewidmet waren, rückt nun ein Aspekt in den Mittelpunkt, der im Alltag vieler Benutzer eine erhebliche Rolle spielt: die flexible Verwaltung mehrerer Aliasse pro Ziel-URL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Den Quelltext zu diesem Entwicklungsstand findest Du auf Github unter &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-06"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-06&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier noch die relevanten Screenshots der Vaadin-Anwendung.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 - Einführung multipler Aliasse - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-einfuehrung-multipler-aliasse-teil-1/</link><pubDate>Thu, 11 Dec 2025 07:05:25 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-einfuehrung-multipler-aliasse-teil-1/</guid><description>&lt;h2 id="einleitung-mehr-komfort-für-benutzer"&gt;Einleitung: Mehr Komfort für Benutzer&lt;/h2&gt;
&lt;p&gt;Mit dem heutigen Entwicklungsschritt des URL-Shortener-Projekts wurde ein entscheidender Meilenstein erreicht, der die Benutzererfahrung grundlegend verbessert. Bis zu diesem Punkt war die Arbeit mit Kurz-URLs zwar funktional, aber in vielerlei Hinsicht noch linear: Jede Ziel-URL war genau einem Alias zugeordnet. Das bedeutete, dass Benutzer für unterschiedliche Kontexte oder Kampagnen jeweils eine neue Kurz-URL erstellen mussten, selbst wenn das Ziel identisch war. Dieser Ansatz war zwar einfach, aber nicht flexibel genug, um den realen Anwendungsanforderungen gerecht zu werden.&lt;/p&gt;</description></item><item><title>Adventskalender 2025 – Vom Raster zum Detail: Die Benutzererfahrung im Short-URL-Manager verstehen</title><link>https://javapro.svenruppert.com/adventskalender-2025-vom-raster-zum-detail-die-benutzererfahrung-im-short-url-manager-verstehen/</link><pubDate>Wed, 10 Dec 2025 07:16:25 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-vom-raster-zum-detail-die-benutzererfahrung-im-short-url-manager-verstehen/</guid><description>&lt;h2 id="die-derzeitige-ui-aus-sicht-des-benutzers"&gt;Die derzeitige UI aus Sicht des Benutzers&lt;/h2&gt;
&lt;p&gt;Beim ersten Aufruf landet der Benutzer in der Overview. Die Seite ist aus einem Vaadin-Grid aufgebaut, dessen Kopfbereich eine Suchleiste, Paging-Elemente sowie einen kleinen Einstellungs-Button mit Zahnrad enthält. Der wichtigste Fluss beginnt damit, dass die Tabelle sofort verständliche Spalten anzeigt: den Shortcode als klar typografisch abgesetzter Monospace-Wert mit Kopier-Aktion, die Original-URL als anklickbarer Link, einen Erstellungszeitpunkt im lokalen Format sowie ein Ablauf-Badge, das semantische Zustände wie „Expired“, „Today“ oder „in n days“ visuell über Themenfarben kommuniziert.&lt;/p&gt;</description></item><item><title>Adventskalender - 2025 - Vom Beobachter zum Gestalter: Benutzerkontrolle in der Übersicht - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-2/</link><pubDate>Tue, 09 Dec 2025 07:06:00 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-2/</guid><description>&lt;p&gt;Die serverseitige Erweiterung für die dynamische Spaltensichtbarkeit folgt derselben gestalterischen Logik wie die UI: Einfachheit, klare Zuständigkeit und ein präziser Datenfluss. Während die OverviewView und der ColumnVisibilityDialog die Oberfläche für die Interaktion bilden, übernehmen mehrere spezialisierte REST-Handler die Verarbeitung und Persistenz der Benutzereinstellungen. Ihre Aufgabe besteht darin, eingehende JSON-Anfragen zu verarbeiten, zu validieren, in Domänenoperationen zu übersetzen und den aktuellen Zustand zurückzugeben oder zu speichern.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der&lt;br&gt;
Quelltext für diese Version befindet sich auf GitHub unter&lt;/strong&gt; &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-04"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-04&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Adventskalender - 2025 - Vom Beobachter zum Gestalter: Benutzerkontrolle in der Übersicht - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-1/</link><pubDate>Mon, 08 Dec 2025 17:33:19 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-vom-beobachter-zum-gestalter-benutzerkontrolle-in-der-uebersicht-teil-1/</guid><description>&lt;p&gt;Mit dem vierten Tag des Adventskalenders verändert sich die Perspektive auf die Anwendung grundlegend. Während die Benutzer in den bisherigen Ausbaustufen vor allem auf vorbereitete Strukturen reagierten, tritt nun ein Element der aktiven Gestaltung hinzu. Die „Overview“ war bislang ein zentraler Spiegel des Systemzustands: Sie zeigte alle gespeicherten Kurzlinks, erlaubte deren Filterung und lieferte mit dem Detaildialog einen vertieften Einblick in einzelne Objekte. Doch die Struktur und Sichtbarkeit der Spalten waren bis zu diesem Punkt unveränderlich. Der Benutzer sah stets die Auswahl, die der Entwickler als sinnvoll definiert hatte. Mit der Einführung der dynamischen Spaltensichtbarkeit wird dieser Zustand aufgehoben.&lt;/p&gt;</description></item><item><title>Adventskalender - 2025 - Detail Dialog - Teil 2</title><link>https://javapro.svenruppert.com/adventskalender-2025-detail-dialog-teil-2/</link><pubDate>Sun, 07 Dec 2025 07:06:14 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-detail-dialog-teil-2/</guid><description>&lt;h2 id="client-vertrag-aus-ui-perspektive"&gt;Client-Vertrag aus UI-Perspektive&lt;/h2&gt;
&lt;p&gt;Die Benutzeroberfläche bildet in diesem Projekt nicht nur eine grafische Schicht über dem Backend, sondern ist auch &lt;strong&gt;Teil des Gesamtvertrags&lt;/strong&gt; zwischen Benutzer, Client und Server. In diesem Teil steht der Datenfluss aus Sicht der UI im Mittelpunkt: wie Eingaben in strukturierte Anfragen übersetzt werden, wie der Client diese weiterleitet und welche Rückmeldungen die Benutzeroberfläche anschließend verarbeitet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Quelltext für diese Version befindet sich auf GitHub unter&lt;/strong&gt; &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-03"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-03&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hier ist der Screenshot der Version, die wir nun implementieren.&lt;/p&gt;</description></item><item><title>Adventskalender - 2025 - Detail Dialog - Teil 1</title><link>https://javapro.svenruppert.com/adventskalender-2025-detail-dialog-teil-1/</link><pubDate>Sat, 06 Dec 2025 07:05:24 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-detail-dialog-teil-1/</guid><description>&lt;h2 id="einordnung-und-zielsetzung-aus-ui-sicht"&gt;Einordnung und Zielsetzung aus UI-Sicht&lt;/h2&gt;
&lt;p&gt;Mit dem heutigen Tag des Adventskalenders wird der Fokus gezielt auf die Interaktionsebene gelegt, die in den vorangegangenen Teilen vorbereitet wurde. Während zu Beginn die grundlegende Struktur der Benutzeroberfläche und das Layout definiert wurden und nachfolgenddie interaktive Tabellenansicht mit Sortierung, Filterung und dynamischen Aktionen etabliert wurde, geht es nun darum, den Übergang von der Übersicht zur Detailbetrachtung konsequent zu gestalten. Der Benutzer soll nicht mehr nur eine tabellarische Sammlung von Datenpunkten sehen, sondern eine auf das jeweilige Objekt zugeschnittene Ansicht erhalten, die kontextbezogene Aktionen ermöglicht.&lt;/p&gt;</description></item><item><title>Adventskalender - 2025 - Filter &amp; Search – Teil 02</title><link>https://javapro.svenruppert.com/adventskalender-2025-filter-search-teil-02/</link><pubDate>Wed, 03 Dec 2025 07:07:57 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-filter-search-teil-02/</guid><description>&lt;p&gt;Im vorherigen Teil haben wir uns die Implementierung auf der Serverseite angesehen. In diesem Teil geht es nun um die Abbildung auf der Benutzerseite.&lt;/p&gt;
&lt;p&gt;Den Quelltext zu dem Ausgangszustand ist auf GitHub unter &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-00"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-00&lt;/a&gt; zu finden. Der nachfolgende Screenshot zeigt diesen Entwicklunsgstand.&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/12/image-2-1024x208.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Der Fokus dieses Adventskalender-Tages liegt auf der Einführung einer gezielten &lt;strong&gt;Filter-, Such- und Paging-Funktionalität&lt;/strong&gt; auf der UI Seite. Ziel ist es, die bestehende „Overview“-Ansicht so zu erweitern, dass Benutzer gezielt nach bestimmten Kurzcodes oder URL-Fragmenten suchen, Zeiträume einschränken und die Ergebnisse seitenweise abrufen können. Alle technischen Grundlagen dazu sind in dem vorherigen Teil gelegt worden.&lt;/p&gt;</description></item><item><title>URL‑Shortener Adventskalender 2025</title><link>https://javapro.svenruppert.com/urlshortener-adventskalender-2025/</link><pubDate>Mon, 01 Dec 2025 09:03:59 +0000</pubDate><guid>https://javapro.svenruppert.com/urlshortener-adventskalender-2025/</guid><description>&lt;p&gt;Der Dezember 2025 steht ganz im Zeichen eines Projekts, das in den vergangenen Monaten stetig gewachsen ist: **der Java-basierte URL-Shortener, ein vollständig mit Core Java, Jetty und Vaadin Flow umgesetztes Open-Source-**Projekt. Der Adventskalender begleitet Benutzer jeden Tag durch ein neues Feature, einen technischen Deep Dive oder eine Verbesserung der Architektur – von der grundlegenden Datenstruktur über REST-Handler bis hin zu UI-Komponenten und Security-Aspekten.&lt;/p&gt;
&lt;h2 id="motivation-warum-ein-eigener-url-shortener"&gt;&lt;strong&gt;Motivation: Warum ein eigener URL-Shortener?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Das gesamte Projekt wird vollständig auf GitHub offen entwickelt. Dort finden Benutzer nicht nur den aktuellen Stand des Codes, sondern auch sämtliche historischen Entwicklungsschritte, Patches, Branches und PRs, die im Rahmen des Adventskalenders thematisiert werden. Der Quellcode ist unter folgender Adresse einsehbar: &lt;a href="https://github.com/svenruppert/url-shortener"&gt;https://github.com/svenruppert/url-shortener&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Code. Collaboration. Community.</title><link>https://javapro.svenruppert.com/2-2/</link><pubDate>Mon, 01 Dec 2025 07:01:12 +0000</pubDate><guid>https://javapro.svenruppert.com/2-2/</guid><description>&lt;h3 id="jcon-usa--ibm-techxchange-2025--wo-der-java-spirit-in-orlando-ein-neues-zuhause-fand"&gt;JCON USA @ IBM TechXchange 2025 – wo der Java-Spirit in Orlando ein neues Zuhause fand&lt;/h3&gt;
&lt;p&gt;Als das JCON-Team ankündigte, seine etablierte Java-Konferenzreihe über den Atlantik zu bringen, waren die Erwartungen hoch. JCON Europe gilt seit Jahren als Pflichttermin für Java-Entwickler – lebendig, technisch anspruchsvoll und stark community-getrieben. Die erste US-Ausgabe, &lt;strong&gt;JCON USA @ IBM TechXchange 2025&lt;/strong&gt;, erfüllte diese Erwartungen nicht nur, sondern übertraf sie. Entwickler aus aller Welt kamen nach Orlando zusammen, um drei Tage lang Java in all seinen Facetten zu feiern.&lt;/p&gt;</description></item><item><title>LLM Context</title><link>https://javapro.svenruppert.com/llm-context/</link><pubDate>Mon, 17 Nov 2025 07:01:55 +0000</pubDate><guid>https://javapro.svenruppert.com/llm-context/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/10/ollama_memory-1024x585.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Im Entwickleralltag haben wir die LLMs als Coding-Partner liebgewonnen. Man kann nicht nur einzelne Fragen an eine LLM stellen, sondern einen ganzen Chatverlauf führen. Ist die LLM so smart, dass sie mich und die vorherigen Fragen und Antworten kennt? Das Zauberwort heisst &lt;strong&gt;LLM&lt;/strong&gt; &lt;strong&gt;Context&lt;/strong&gt;. Dies wollen wir uns nun etwas genauer anschauen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vorbemerkungen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die Codebeispiele basieren auf dem Wissen aus dem Artikel &lt;a href="https://javapro.io/de/ollama-rest-api"&gt;Ollama REST&lt;/a&gt;. Es ist sinnvoll, zuerst diesen zu lesen.&lt;/li&gt;
&lt;li&gt;Alle Beispiele stehen in GitHub-Repos zur Verfügung.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ollama.com"&gt;Ollama&lt;/a&gt; muss installiert sein. Mehr Informationen zur Installation gibt es im Artikel &lt;a href="https://javapro.io/de/lokale-llms"&gt;Lokale LLMs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="beispiel-hauptstadt"&gt;Beispiel Hauptstadt&lt;/h2&gt;
&lt;p&gt;Wir starten mit einem Beispiel und möchten eine LLM fragen, was die Hauptstädte von Frankreich und Schweden sind. Dazu machen wir zwei Anfragen via Ollama (in Open WebUI) mit dem llama3.2 Modell.&lt;/p&gt;</description></item><item><title>IntelliJ-Plugin „Save Actions“: Kontinuität durch Community-Maintenance</title><link>https://javapro.svenruppert.com/intellij-plugin-save-actions-kontinuitaet-durch-community-maintenance/</link><pubDate>Tue, 11 Nov 2025 11:48:59 +0000</pubDate><guid>https://javapro.svenruppert.com/intellij-plugin-save-actions-kontinuitaet-durch-community-maintenance/</guid><description>&lt;p&gt;Für viele Entwicklerinnen und Entwickler, die mit IntelliJ IDEA arbeiten, ist das &lt;strong&gt;Plugin „Save Actions“&lt;/strong&gt; seit Langem ein bewährter Begleiter, um eine konsistente und saubere Codebasis zu gewährleisten. Durch das automatische Ausführen konfigurierbarer Aktionen beim Speichern einer Datei – wie etwa das Optimieren von Imports, das Neuformatieren von Code, das Neuordnen von Klassenmitgliedern oder das Anwenden kleiner Quickfixes – trägt das Plugin dazu bei, dass Projekte teamübergreifend einheitlich bleiben.&lt;/p&gt;
&lt;p&gt;Nachdem die ursprüngliche Entwicklung von „Save Actions“ vor einigen Jahren eingestellt wurde, bestand das Risiko, dass das Plugin mit neueren IntelliJ-Versionen nicht mehr kompatibel sein würde. Um dies zu verhindern, übernahm &lt;em&gt;XDEV Software&lt;/em&gt; als verantwortlicher Maintainer die Pflege und stellt seither regelmäßig Aktualisierungen und Wartungsversionen über den JetBrains Marketplace bereit. Das Ziel ist unverändert: die Funktionsfähigkeit, Kompatibilität und Stabilität des Plugins für die stetig wachsende Entwicklergemeinschaft zu sichern, die darauf vertraut.&lt;/p&gt;</description></item><item><title>Map deinen Code - Meistere deine Architektur</title><link>https://javapro.svenruppert.com/map-deinen-code-meistere-deine-architektur/</link><pubDate>Mon, 13 Oct 2025 07:10:28 +0000</pubDate><guid>https://javapro.svenruppert.com/map-deinen-code-meistere-deine-architektur/</guid><description>&lt;p&gt;In Projekten mit Hunderttausenden von Codezeilen verliert man leicht den Überblick über Code, Architektur und Qualität. Sind wir noch auf Kurs? Blockieren wir uns selbst durch interne Abhängigkeiten? Oder stecken wir bereits fest? Software ist immateriell; wir können nicht sehen, in welchem Zustand sie wirklich ist.&lt;/p&gt;
&lt;p&gt;Um das herauszufinden, müssen wir systematisch prüfen, ob das, was die Entwickler im Sinn hatten, auch mit dem tatsächlichen Code übereinstimmt. Spoiler: Das tut es leider nicht. Die Gründe dafür sind, dass Software sich schneller verändert, als man hinterherkommt, dass jeder Entwickler seine eigenen Vorstellungen hat und zu guter Letzt, dass keiner das Gesamtbild hat.&lt;/p&gt;</description></item><item><title>Ollama Rest API</title><link>https://javapro.svenruppert.com/ollama-rest-api/</link><pubDate>Mon, 06 Oct 2025 07:00:04 +0000</pubDate><guid>https://javapro.svenruppert.com/ollama-rest-api/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/07/image_small_ollama_rest.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;In den letzten beiden Artikeln haben wir Ollama als Plattform zur Ausführung lokaler LLMs kennengelernt. Zusätzlich haben wir Open WebUI als UI für Anfragen an Ollama (in Docker) installiert. Eine Frage, die noch offen ist: wie kann Open WebUI auf Ollama zugreifen? Die Antwort ist ganz einfach: &lt;strong&gt;Ollama&lt;/strong&gt; stellt eine &lt;strong&gt;REST&lt;/strong&gt; Schnittstelle zur Verfügung, die wir uns etwas genauer anschauen wollen.&lt;/p&gt;
&lt;h2 id="dokumentation-rest-api"&gt;Dokumentation REST api&lt;/h2&gt;
&lt;p&gt;Das Ollama &lt;strong&gt;REST AP&lt;/strong&gt;I ist unter &lt;a href="https://github.com/ollama/ollama/blob/main/docs/api.md"&gt;https://github.com/ollama/ollama/blob/main/docs/api.md&lt;/a&gt; dokumentiert. Von dieser API wollen wir uns konkret anschauen, wie man eine Liste aller heruntergeladenen Ollama Modelle (LLMs) bekommt und wie man Anfragen an ein konkretes Modell machen kann.&lt;/p&gt;</description></item><item><title>MockServer NeoLight: Eine schlanke Alternative für API-Tests mit Testcontainers</title><link>https://javapro.svenruppert.com/mockserver-neolight-eine-schlanke-alternative-fuer-api-tests-mit-testcontainers/</link><pubDate>Fri, 29 Aug 2025 13:22:36 +0000</pubDate><guid>https://javapro.svenruppert.com/mockserver-neolight-eine-schlanke-alternative-fuer-api-tests-mit-testcontainers/</guid><description>&lt;p&gt;Das Open-Source-Projekt &lt;a href="https://github.com/xdev-software/mockserver-neolight"&gt;MockServer NeoLight&lt;/a&gt; wurde als leichtgewichtige Neufassung des ursprünglichen &lt;a href="https://github.com/mock-server/mockserver"&gt;MockServer&lt;/a&gt; veröffentlicht. Der Schwerpunkt liegt auf &lt;strong&gt;Einfachheit&lt;/strong&gt;, &lt;strong&gt;Wartbarkeit&lt;/strong&gt; und der nahtlosen Integration mit &lt;a href="https://java.testcontainers.org/"&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Das MockServer-Konzept ermöglicht es Entwicklern, HTTP- und HTTPS-Anfragen zu &lt;strong&gt;mocken und damit APIs für Testzwecke zu simulieren&lt;/strong&gt;. Durch das Festlegen von Erwartungen an eingehende Anfragen und definierten Antworten lassen sich kontrollierte Umgebungen für Integrationstests schaffen. Dadurch wird das zu testende System von realen externen Abhängigkeiten isoliert, was zu vorhersehbaren und wiederholbaren Ergebnissen führt.&lt;/p&gt;</description></item><item><title>Was macht Vaadin-Komponenten besonders?</title><link>https://javapro.svenruppert.com/was-macht-vaadin-komponenten-besonders/</link><pubDate>Wed, 20 Aug 2025 13:26:00 +0000</pubDate><guid>https://javapro.svenruppert.com/was-macht-vaadin-komponenten-besonders/</guid><description>&lt;p&gt;Aus meiner Erfahrung heraus hebt sich Vaadin seit jeher von anderen Java-Frameworks ab. Natürlich erlaubt es die Umsetzung moderner Web-UIs, doch der eigentliche Unterschied liegt in seiner &lt;strong&gt;Komponentenarchitektur&lt;/strong&gt;. Diese ist nicht als kurzfristiges Hilfsmittel gedacht, sondern konsequent auf Wartbarkeit und Flexibilität ausgelegt. Damit entsteht die Möglichkeit, Anwendungen über viele Jahre hinweg stabil zu betreiben und dennoch schrittweise zu erweitern.&lt;/p&gt;
&lt;p&gt;Ganz gleich, ob ich eine Komponente aus der offiziellen Bibliothek nutze, eine eigene entwickle oder ein npm-Paket einbinde – Vaadin stellt sicher, dass alle Bausteine einem klaren Muster folgen. Die Verbindung zwischen Server und Client bleibt konsistent und verlässlich. Dadurch konnte ich Anwendungen im Laufe der Zeit Stück für Stück weiterentwickeln, ohne jemals gezwungen zu sein, sie vollständig neu aufzusetzen.&lt;/p&gt;</description></item><item><title>Java verbindet seit 30 Jahren Systeme und Communities</title><link>https://javapro.svenruppert.com/java-verbindet-seit-30-jahren-systeme-und-communities/</link><pubDate>Mon, 18 Aug 2025 07:06:45 +0000</pubDate><guid>https://javapro.svenruppert.com/java-verbindet-seit-30-jahren-systeme-und-communities/</guid><description>&lt;p&gt;&lt;em&gt;Von der Erfüllung des Slogans „The Network is the Computer“ über den Java EE-Standard bis hin zur Unterstützung von SOAP- und REST-Webdiensten bis hin zur Schaffung eines starken Ökosystems und Communities, die Microservices und Cloud-native Anwendungen unterstützen, die ohne den Schwerpunkt auf APIs nicht möglich sind. Java ist seit seiner Einführung mit dem Internet verflochten und unterstützt bestehende sowie eigene herstellerneutrale Standards und De-facto-Standards, die aktuelle Herausforderungen widerspiegeln, wie etwa MicroProfile oder die Unterstützung der Integration mit KI.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Web-UI für den URL Shortener</title><link>https://javapro.svenruppert.com/web-ui-fuer-den-url-shortener/</link><pubDate>Sun, 17 Aug 2025 10:46:26 +0000</pubDate><guid>https://javapro.svenruppert.com/web-ui-fuer-den-url-shortener/</guid><description>&lt;h3 id="1-einleitung-und-zielsetzung"&gt;&lt;strong&gt;1. Einleitung und Zielsetzung&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Die ersten beiden Teile dieser Serie haben die theoretischen und praktischen Grundlagen eines URL-Shorteners in reinem Java gelegt – von der semantischen Einordnung kurzer URLs über die Architektur eines robusten Mappingsystems bis hin zur konkreten Implementierung eines REST-basierten Dienstes auf Basis des JDK-HTTP-Servers. Damit steht ein funktionales, modular erweiterbares Backend zur Verfügung, das Kurzlinks erzeugt, verwaltet und effizient auflöst. Was bisher jedoch fehlt, ist eine visuelle Schnittstelle, über die Nutzer direkt mit dem System interagieren können – sei es zur manuellen Erzeugung von Kurzlinks, zur Einsicht bestehender Mappings oder zur gezielten Analyse einzelner Weiterleitungen.&lt;/p&gt;</description></item><item><title>Teil II - URL - Shortener</title><link>https://javapro.svenruppert.com/teil-ii-url-shortener/</link><pubDate>Fri, 20 Jun 2025 12:57:53 +0000</pubDate><guid>https://javapro.svenruppert.com/teil-ii-url-shortener/</guid><description>&lt;h3 id="11-zielsetzung-und-abgrenzung-zum-architekturteil"&gt;1.1 Zielsetzung und Abgrenzung zum Architekturteil&lt;/h3&gt;
&lt;p&gt;Im &lt;a href="https://javapro.io/de/kurze-links-klare-architektur-ein-url-shortener-in-core-java/"&gt;ersten Teil&lt;/a&gt; dieser Serie stand die Theorie im Vordergrund: Wir haben geklärt, warum ein URL-Shortener nicht nur ein Komfortwerkzeug, sondern ein sicherheitsrelevantes Element digitaler Infrastruktur ist. Wir haben Modelle zur Kollisionserkennung, Entropieverteilung und Weiterleitungslogik diskutiert sowie architekturelle Varianten analysiert – von zustandslosen Redirect-Services bis hin zu domänenspezifischen Validierungsmechanismen.&lt;/p&gt;
&lt;p&gt;Dieser zweite Teil wendet sich nun der konkreten Umsetzung zu. Wir entwickeln eine erste lauffähige Version eines URL-Shorteners in &lt;strong&gt;Java 24&lt;/strong&gt; – bewusst &lt;strong&gt;ohne den Einsatz von Frameworks&lt;/strong&gt; wie Spring Boot oder Jakarta EE. Ziel ist eine transparente, modular strukturierte Lösung, die alle Kernfunktionen bereitstellt: das Verkürzen von URLs, das sichere Speichern von Mappings, das Weiterleiten über HTTP und die optionale Darstellung über eine Vaadin-basierte Benutzeroberfläche.&lt;/p&gt;</description></item><item><title>Wenn hashCode() lügt und equals() hilflos ist</title><link>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</link><pubDate>Sun, 08 Jun 2025 09:53:06 +0000</pubDate><guid>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</guid><description>&lt;p&gt;Ein tiefer Blick in Java’s HashMap-Fallen – visuell demonstriert mit Vaadin Flow&lt;/p&gt;
&lt;h3 id="die-stille-gefahr-in-der-standardbibliothek"&gt;&lt;strong&gt;Die stille Gefahr in der Standardbibliothek&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Die Verwendung von HashMap und HashSet gehört zum täglich Brot in der Java-Entwicklung. Diese Datenstrukturen bieten exzellente Performance für Lookup- und Einfügeoperationen – solange ihre fundamentalen Annahmen erfüllt bleiben. Eine davon lautet: Der hashCode() eines Schlüssels bleibt stabil. Was aber, wenn das nicht der Fall ist?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u-tSy27RXA8"&gt;https://www.youtube.com/watch?v=u-tSy27RXA8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Genau hier lauert eine der subtilsten und zugleich gefährlichsten Fallen der Java-Standardbibliothek: mutable Schlüsselobjekte. In diesem Artikel zeigen wir nicht nur, warum diese Konstellation problematisch ist, sondern führen das Phänomen interaktiv mit Vaadin Flow vor. Leserinnen und Leser erfahren, wie die HashMap intern funktioniert, warum equals() allein nicht genügt, und wie man mit modernen Sprachmitteln wie record robuste, unveränderliche Schlüssel erzeugt.&lt;/p&gt;</description></item><item><title>Erstellen einer einfachen Datei-Up/Download-Anwendung mit Vaadin Flow</title><link>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</link><pubDate>Tue, 03 Jun 2025 13:14:00 +0000</pubDate><guid>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</guid><description>&lt;p&gt;Vaadin Flow ist ein leistungsstarkes Framework zur Erstellung moderner Webanwendungen in Java, bei denen die gesamte UI-Logik serverseitig implementiert wird. In diesem Blogpost bauen wir Schritt für Schritt eine einfache Datei-Verwaltungs-Applikation, die es Nutzern erlaubt, Dateien hochzuladen, auf dem Server zu speichern und bei Bedarf wieder herunterzuladen. Dies ist eine gute Möglichkeit zu zeigen, wie man Schritt für Schritt den Schutz vor CWE-22, CWE-377 und CWE-778 aufbauen kann.&lt;/p&gt;
&lt;p&gt;Wir fokussieren uns in diesem Beispiel ausschließlich auf die Funktionalität und nicht auf die grafische Gestalltung. Diese ist absichtlich sehr einfach gehalten worden um sich auf die technischen Aspekte zu konzentrieren.&lt;/p&gt;</description></item><item><title>Remote LLMs</title><link>https://javapro.svenruppert.com/remote-llms/</link><pubDate>Wed, 09 Apr 2025 07:02:56 +0000</pubDate><guid>https://javapro.svenruppert.com/remote-llms/</guid><description>&lt;p&gt;&lt;strong&gt;und die Integration in Open WebUI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/02/image_remote_llm.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Im letzten Artikel &lt;a href="https://javapro.io/de/lokale-llms"&gt;https://javapro.io/de/lokale-llms&lt;/a&gt; haben wir gezeigt, wie man über Ollama lokal LLMs ausführt und Open WebUI als komfortables Interface für Anfragen an diese LLMs in Docker einrichtet. Außerdem wurde erläutert, wie sich OpenAI (also ChatGPT) in Open WebUI einbinden lässt.&lt;/p&gt;
&lt;p&gt;In diesem Artikel geht es nun darum, wie sich die Claude-LLMs von Anthropic sowie Gemini von Google in Open WebUI integrieren lassen.&lt;/p&gt;
&lt;p&gt;Zum Start eine kleine Vorbemerkung: Claude und Gemini werden nur in WebUI integriert, laufen aber selber nicht lokal. Und Anfragen sind (ähnlich wie bei OpenAI) kostenpflichtig.&lt;/p&gt;</description></item><item><title>Lokale LLMs</title><link>https://javapro.svenruppert.com/lokale-llms/</link><pubDate>Tue, 14 Jan 2025 18:04:38 +0000</pubDate><guid>https://javapro.svenruppert.com/lokale-llms/</guid><description>&lt;p&gt;&lt;strong&gt;mit Ollama und Open WebUI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2024/12/ai_and_lama.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Seit dem kometenhaften Aufstieg von ChatGPT sind AI (Artificial Intelligence) und LLMs (Large Language Models) in aller Munde. Es gibt kaum jemanden, der ChatGPT (oder einer seiner Kollegen) nicht im beruflichen oder privaten Umfeld nutzt. Was weniger bekannt ist, dass man LLMs auch herunterladen und lokal laufen lassen kann.&lt;/p&gt;
&lt;p&gt;Diese hat folgende Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verschiedene LLMs und Versionen lassen sich flexibel testen.&lt;/li&gt;
&lt;li&gt;Da alles lokal läuft, können auch Anfragen mit geschäftsrelevanten Informationen gestellt werden, ohne dass Daten auf fremde Server gelangen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eine Möglichkeit dafür bietet das Open-Source-Projekt Ollama: Es erlaubt, kleinere LLMs herunterzuladen und direkt auf dem lokalen Rechner auszuführen. Dieser Artikel zeigt zunächst die Installation von Ollama. Anschließend wird ein benutzerfreundliches Web-UI eingerichtet, das den Zugriff auf Ollama deutlich komfortabler gestaltet.&lt;/p&gt;</description></item><item><title>Kostenminimierung durch Nutzung von Cloud-Speicher mit Spring-Data-Eclipse-Store</title><link>https://javapro.svenruppert.com/kostenminimierung-durch-nutzung-von-cloud-speicher-mit-spring-data-eclipse-store/</link><pubDate>Wed, 21 Feb 2024 14:59:47 +0000</pubDate><guid>https://javapro.svenruppert.com/kostenminimierung-durch-nutzung-von-cloud-speicher-mit-spring-data-eclipse-store/</guid><description>Mit Hilfe von Spring Data und EclipseStore können massive Kosten für Datenspeicherung in der Cloud eingespart werden. Wie das funktioniert, zeigt folgender Artikel durch die Spring-Data-Eclipse-Store-Bibliothek.</description></item><item><title>Bewährte Praktiken für CI/CD Pipelines</title><link>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-ci-cd-pipelines/</link><pubDate>Wed, 30 Nov 2022 17:51:53 +0000</pubDate><guid>https://javapro.svenruppert.com/bewaehrte-praktiken-fuer-ci-cd-pipelines/</guid><description>Diese Praktiken sollen eine Vorstellung davon vermitteln, wie einige Probleme in modernen CI/CD-Pipelines gelöst und was vermieden werden sollte. Verwenden Sie diese Muster als Richtlinie beim Implementieren Ihrer eigenen Pipelines.</description></item><item><title>Die Zukunft von Containern - Was kommt als Nächstes?</title><link>https://javapro.svenruppert.com/die-zukunft-von-containern-was-kommt-als-naechstes/</link><pubDate>Wed, 15 Jun 2022 17:29:13 +0000</pubDate><guid>https://javapro.svenruppert.com/die-zukunft-von-containern-was-kommt-als-naechstes/</guid><description>Vielleicht haben Sie schon die Schlagworte gehört, die in aller Munde sind, wenn es um die Zukunft von Containern geht. Seltsame Namen wie &amp;ldquo;Micro-VMs&amp;rdquo;… &amp;ldquo;Unikernel&amp;rdquo;… &amp;ldquo;Sandboxes&amp;rdquo;… Haben Sie sich gefragt, was diese Dinge sind und wie Sie sie nutzen können? Oder sollten Sie diese überhaupt verwenden?</description></item></channel></rss>