<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Core Java on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/categories/core-java/</link><description>Recent content in Core Java on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Wed, 08 Apr 2026 12:00:36 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/categories/core-java/index.xml" rel="self" type="application/rss+xml"/><item><title>Großes Kino für Java-Entwickler &amp; Architekten</title><link>https://javapro.svenruppert.com/grosses-kino-fuer-java-entwickler-architekten/</link><pubDate>Wed, 08 Apr 2026 12:00:36 +0000</pubDate><guid>https://javapro.svenruppert.com/grosses-kino-fuer-java-entwickler-architekten/</guid><description>&lt;p&gt;&lt;strong&gt;JCON EUROPE 2026 | 20. bis 23. April 2026 | Cinedom in Köln&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wer heute über moderne Softwareentwicklung spricht, spricht zwangsläufig über Java. Kaum eine Technologie prägt die Enterprise-Welt so nachhaltig – und kaum eine Community ist gleichzeitig so lebendig, vielfältig und innovationsgetrieben. Genau hier setzt die JCON an: als Treffpunkt, als Plattform und als Erlebnisraum für Entwicklerinnen und Entwickler aus der ganzen Welt. Mit Teilnehmern aus über 70 Ländern hat sich die JCON längst zu einem internationalen Treffpunkt entwickelt. Dabei bleiben &lt;strong&gt;Offenheit, Wissensaustausch und Community-Gedanke&lt;/strong&gt; zentrale Elemente.&lt;/p&gt;</description></item><item><title>DevOps-Patterns und Java 26 für On-Premises LLM-Plattformen in sicherheitskritischen Umgebungen</title><link>https://javapro.svenruppert.com/devops-patterns-und-java-26-fuer-on-premises-llm-plattformen-in-sicherheitskritischen-umgebungen/</link><pubDate>Mon, 06 Apr 2026 07:00:00 +0000</pubDate><guid>https://javapro.svenruppert.com/devops-patterns-und-java-26-fuer-on-premises-llm-plattformen-in-sicherheitskritischen-umgebungen/</guid><description>&lt;p&gt;Während die erste Welle der KI-Adoption in vielen Organisationen auf Cloud-APIs setzte, ist dieser Ansatz in sicherheitskritischen und regulierten Umgebungen häufig nicht nutzbar. Vertraulichkeitsanforderungen, Datenschutzvorgaben und der Bedarf an technisch durchsetzbaren Betriebsgrenzen stehen dem entgegen. In On-Premises-Setups erweitert sich die Architektur um zusätzliche Laufzeitkomponenten, etwa LLM-Serving, Retrieval und Wissensartefakte wie Indizes und Prompts. Der Fokus verschiebt sich damit von der reinen Modellnutzung zur Plattformfrage: Wie lassen sich Datenzugriffe und Berechtigungen entlang der Pipeline kontrollieren? Wie bleiben Änderungen an Modellen, Prompts und Indizes nachvollziehbar? Und wie lassen sich Fehlerfälle reproduzierbar eingrenzen und zurückrollen?&lt;/p&gt;</description></item><item><title>So wird JCON EUROPE 2026 zum individuellen Erlebnis</title><link>https://javapro.svenruppert.com/so-wird-jcon-europe-2026-zum-individuellen-erlebnis/</link><pubDate>Tue, 31 Mar 2026 12:01:01 +0000</pubDate><guid>https://javapro.svenruppert.com/so-wird-jcon-europe-2026-zum-individuellen-erlebnis/</guid><description>&lt;p&gt;Die &lt;strong&gt;JCON EUROPE 2026&lt;/strong&gt;, die vom &lt;strong&gt;20. bis 23. April&lt;/strong&gt; im &lt;strong&gt;Cinedom Multiplex Cinema&lt;/strong&gt; in Köln stattfindet, setzt konsequent auf ein Format, das Teilnehmern maximale Flexibilität bietet. Statt eines festen Ablaufs steht die individuelle Gestaltung der eigenen Konferenzerfahrung im Mittelpunkt.&lt;/p&gt;
&lt;p&gt;Mit einer Vielzahl an Sessions, Formaten und Austauschmöglichkeiten können Besucher selbst entscheiden, welche Inhalte, Gespräche und Kontakte für sie im Fokus stehen.&lt;/p&gt;
&lt;p&gt;Zentrale Grundlage dafür ist der &lt;strong&gt;JCON-Schedule&lt;/strong&gt;: Teilnehmer können ihre persönliche Agenda zusammenstellen, relevante &lt;strong&gt;Sessions&lt;/strong&gt; vormerken und gezielt &lt;strong&gt;1:1 Meetings&lt;/strong&gt; mit Speakern oder Ausstellern organisieren. Damit wird die Konferenz nicht nur konsumiert, sondern aktiv gesteuert – je nach individuellen Interessen, Projekten und fachlichen Schwerpunkten.&lt;/p&gt;</description></item><item><title>Datenorientierte Programmierung mit Java</title><link>https://javapro.svenruppert.com/datenorientierte-programmierung-mit-java/</link><pubDate>Mon, 23 Mar 2026 07:00:04 +0000</pubDate><guid>https://javapro.svenruppert.com/datenorientierte-programmierung-mit-java/</guid><description>&lt;h2 id="java-und-objektorientierte-programmierung"&gt;Java und Objektorientierte Programmierung&lt;/h2&gt;
&lt;p&gt;Java gibt es nun schon seit mehr als 30 Jahren und wurde von Grund auf als rein objektorientierte Sprache konzipiert. Das Mantra „alles ist ein Objekt“ (nun ja, fast – Primitive ausgenommen) ist vom ersten Tag an tief in der Java DNA verankert. Diese objektorientierte Grundlage hat dabei geholfen, Java zu einer der beliebtesten Programmiersprachen der Welt zu machen. Javaanwendungen gibt es in einem großen Spektrum, angefangen bei Microservices, über Unternehmensanwendungen bis hin zu Android-Mobile-Apps.&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>1BRC - Die ersten 80% Performance</title><link>https://javapro.svenruppert.com/1brc-die-ersten-80-performance/</link><pubDate>Mon, 26 Jan 2026 07:03:43 +0000</pubDate><guid>https://javapro.svenruppert.com/1brc-die-ersten-80-performance/</guid><description>&lt;p&gt;Die &lt;a href="https://www.morling.dev/blog/one-billion-row-challenge/"&gt;One Billion Row Challenge (1BRC)&lt;/a&gt; startete als Projekt über den Jahreswechsel 2023/2024 und widmete sich einer vermeintlich einfachen Fragestellung: Wie schnell können Temperaturmesswerte aus einer Textdatei mittels Java verarbeitet werden, um Minimum-, Durchschnitts- und Maximumwerte pro Wetterstation zu berechnen? Die Herausforderung ergibt sich dabei aus dem Umfang des Datensatzes, der mit einer Milliarde Zeilen eine Gesamtgröße von etwa 13,8 GB umfasst.&lt;/p&gt;
&lt;p&gt;Thomas Wuerthinger, Quan Anh Mai und Alfonso Peterssen erzielten mit 1,5 Sekunden auf 8 Cores das Spitzenresultat. Diese Performance war in diesem Ausmaß unerwartet. Bei einer detaillierten Analyse des Quellcodes wird jedoch ersichtlich, dass die Implementierung weit über die übliche Java-Entwicklung hinausgeht. Es handelt sich um eine hochkomplexe, auf diesen spezifischen Use-Case zugeschnittene Lösung, deren Optimierungen größtenteils nicht ohne Weiteres auf andere Szenarien übertragbar sind.&lt;/p&gt;</description></item><item><title>Java 26 übernimmt HTTP/3 mit der Weiterentwicklung des HttpClient</title><link>https://javapro.svenruppert.com/java-26-uebernimmt-http-3-mit-der-weiterentwicklung-des-httpclient/</link><pubDate>Mon, 19 Jan 2026 07:00:49 +0000</pubDate><guid>https://javapro.svenruppert.com/java-26-uebernimmt-http-3-mit-der-weiterentwicklung-des-httpclient/</guid><description>&lt;h2 id="die-zukunft-der-kommunikation-zwischen-microservices"&gt;die Zukunft der Kommunikation zwischen Microservices&lt;/h2&gt;
&lt;p&gt;Moderne verteilte Architekturen, wie etwa Microservices, sind eng mit der Weiterentwicklung von Netzwerkprotokollen verknüpft. Da sich Microservice-Architekturen als der vorherrschende Ansatz für den Aufbau skalierbarer und resilienter Anwendungen etabliert haben, ist die Effizienz der Service-zu-Service-Kommunikation zu einem zentralen Anliegen geworden.&lt;/p&gt;
&lt;p&gt;Obwohl HTTP/1.1 und HTTP/2 bedeutende Verbesserungen brachten, wie etwa persistente Verbindungen und Request-Multiplexing, waren sie weiterhin grundsätzlich durch ihre Abhängigkeit von TCP eingeschränkt. In Netzwerken mit hoher Latenz oder Instabilität können diese Einschränkungen nach wie vor zu Leistungseinbußen, erhöhter Tail-Latenz und geringerer Resilienz unter Last führen. Mit JEP 517 führt Java 26 Unterstützung für HTTP/3 im HttpClient ein und ermöglicht damit QUIC-basierte Kommunikation. Sehen wir uns an, was sich mit HTTP/3 ändert.&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 –Persistence – Teil 02</title><link>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-02/</link><pubDate>Fri, 05 Dec 2025 07:05:13 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-02/</guid><description>&lt;p&gt;Heute werden wir den StoreIndicator final in die UI integrieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Quelltext für diese Version befindet sich auf GitHub unter &lt;a href="https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-02"&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-02&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier ist der Screenshot der Version, die wir nun implementieren.&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-8.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="vaadin-integration-live-status-des-stores"&gt;&lt;strong&gt;Vaadin-Integration: Live-Status des Stores&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Nachdem die Kommunikation zwischen Client und Server über den AdminClient etabliert wurde, rückt nun die Integration in die Vaadin-Oberfläche in den Mittelpunkt. Das Ziel ist, den aktuellen Systemzustand für den Benutzer sichtbar zu machen, ohne dass eine manuelle Aktualisierung erforderlich ist. Der Mechanismus basiert auf zyklischer Abfrage, Ereignissteuerung und einem reaktiven UI-Konzept, die vollständig in Vaadin implementiert wurden.&lt;/p&gt;</description></item><item><title>Adventskalender – 2025 –Persistence – Teil 01</title><link>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-01/</link><pubDate>Thu, 04 Dec 2025 07:05:08 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-persistence-teil-01/</guid><description>&lt;p&gt;&lt;strong&gt;Sichtbare Veränderung: Wenn die UI den Speicherzustand zeigt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mit dem Ende des letzten Adventskalender-Tages war unser URL-Shortener vollständig funktional: Die Admin-Oberfläche konnte Daten filtern, sortieren und seitenweise darstellen – performant, sauber typisiert und vollständig in Core Java implementiert.&lt;br&gt;
Doch hinter dieser Oberfläche lauerte noch ein unsichtbares Problem: &lt;strong&gt;Alle Daten existierten nur im Arbeitsspeicher.&lt;/strong&gt; Sobald der Server neu gestartet wurde, war der gesamte Datenbestand verloren gegangen.&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-02"&gt;&lt;strong&gt;https://github.com/svenruppert/url-shortener/tree/feature/advent-2025-day-02&lt;/strong&gt;&lt;/a&gt;&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>Adventskalender - 2025 - Filter &amp; Search – Teil 01</title><link>https://javapro.svenruppert.com/adventskalender-2025-filter-search-teil-01/</link><pubDate>Tue, 02 Dec 2025 07:05:12 +0000</pubDate><guid>https://javapro.svenruppert.com/adventskalender-2025-filter-search-teil-01/</guid><description>&lt;p&gt;Mit der in &lt;a href="https://javapro.io/de/web-ui-fuer-den-url-shortener/"&gt;&lt;strong&gt;[Teil III]&lt;/strong&gt;&lt;/a&gt; beschriebenen Vaadin-Oberfläche steht unserem URL-Shortener erstmals eine voll funktionsfähige Administrationskonsole zur Verfügung. Sie ermöglicht, bestehende Kurzlinks tabellarisch einzusehen und manuell zu verwalten. Doch bereits nach wenigen Dutzenden Einträgen zeigt sich eine klare Grenze: Die vollständige Anzeige aller gespeicherten Mappings ist weder performant noch benutzerfreundlich. Ein effizienter Shortener muss skalieren können – nicht nur beim Erzeugen, sondern auch beim Durchsuchen seiner Daten.&lt;/p&gt;
&lt;p&gt;Der Quelltext zu diesem Stand 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 den Stand, mit dem wir beginnen.&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>Signal per SSE, Daten per REST – eine Vaadin-Demonstration in Core Java</title><link>https://javapro.svenruppert.com/signal-per-sse-daten-per-rest-eine-vaadin-demonstration-in-core-java/</link><pubDate>Wed, 03 Sep 2025 13:10:48 +0000</pubDate><guid>https://javapro.svenruppert.com/signal-per-sse-daten-per-rest-eine-vaadin-demonstration-in-core-java/</guid><description>&lt;h2 id="1-einleitung"&gt;1. Einleitung&lt;/h2&gt;
&lt;h3 id="11-motivation-ereignisgetriebene-aktualisierung-ohne-polling"&gt;1.1 Motivation: Ereignisgetriebene Aktualisierung ohne Polling&lt;/h3&gt;
&lt;p&gt;In klassischen Webanwendungen dominiert nach wie vor das Pull-Prinzip: Clients stellen wiederholt Anfragen an den Server, um Veränderungen zu erkennen. Dieses Polling ist einfach, führt aber zu unnötiger Last auf Server- und Netzwerkseite, insbesondere wenn sich der Datenbestand nur sporadisch ändert. Mit &lt;em&gt;Server-Sent Events (SSE)&lt;/em&gt; steht ein standardisiertes Verfahren zur Verfügung, mit dem der Server Änderungen aktiv an verbundene Clients signalisieren kann. Dadurch lassen sich unnötige Anfragen vermeiden, während Aktualisierungen zeitnah an die Oberfläche gelangen.&lt;/p&gt;</description></item><item><title>Wie und warum man das klassische Observer-Pattern in Vaadin verwenden soll</title><link>https://javapro.svenruppert.com/wie-und-warum-man-das-klassische-observer-pattern-in-vaadin-verwenden-soll/</link><pubDate>Mon, 01 Sep 2025 11:26:50 +0000</pubDate><guid>https://javapro.svenruppert.com/wie-und-warum-man-das-klassische-observer-pattern-in-vaadin-verwenden-soll/</guid><description>&lt;p&gt;Das Observer Pattern gehört zu den grundlegenden Entwurfsmustern der Softwareentwicklung und wird traditionell zur Entkopplung von Zustandsänderungen und deren Verarbeitung eingesetzt. Seine Ursprünge liegen in der Entwicklung grafischer Benutzeroberflächen, wo eine Änderung am Datenmodell unmittelbar mehrere Ansichten synchronisieren musste, ohne dass eine direkte Kopplung zwischen diesen Ansichten bestand. Dieses Muster etablierte sich schnell als Standardlösung, um lose gekoppelte Architekturen zu fördern.&lt;/p&gt;
&lt;p&gt;Im Kern adressiert das Observer Pattern die Herausforderung, dass Ereignisse oder Zustandsänderungen nicht isoliert bleiben, sondern von unterschiedlichen Komponenten weiterverarbeitet werden müssen. Dabei entsteht ein asynchrones Benachrichtigungsmodell: Das Subjekt (Subject) informiert alle registrierten Beobachter (Observer), sobald sich sein Zustand ändert. Die Beobachter reagieren darauf individuell, ohne dass das Subjekt deren konkrete Implementierungen kennen muss.&lt;/p&gt;</description></item><item><title>Wie man den Milliarden-Dollar-Fehler repariert</title><link>https://javapro.svenruppert.com/wie-man-den-milliarden-dollar-fehler-repariert/</link><pubDate>Mon, 25 Aug 2025 07:00:45 +0000</pubDate><guid>https://javapro.svenruppert.com/wie-man-den-milliarden-dollar-fehler-repariert/</guid><description>&lt;p&gt;Es gibt Fehler, die sind einfach nur teuer. Und dann gibt es die Nullreferenz. Ein Sprachfeature, das 1965 eingeführt wurde – „einfach, weil es so leicht zu implementieren war“. Seitdem hat die Nullreferenz unzählige Bugs, Systemabstürze und Sicherheitsprobleme hervorgerufen – und Milliarden an Kosten für Wartung und Fehlersuche verursacht. In vielen modernen Programmiersprachen wurde die Referenz daher bereits eliminiert. Dieser Artikel zeigt praktische Wege, wie sich dieser Sprachfehler auch in Java vermeiden lässt.&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>Mehr Action, mehr Übersicht</title><link>https://javapro.svenruppert.com/mehr-action-mehr-uebersicht/</link><pubDate>Mon, 07 Jul 2025 07:03:28 +0000</pubDate><guid>https://javapro.svenruppert.com/mehr-action-mehr-uebersicht/</guid><description>Java-Anwendungen müssen mit einer Vielzahl an Nebenläufigkeitsproblemen kämpfen. Mit neuen Konstrukten gibt es hier eine Lösung.</description></item><item><title>30 Jahre Java, 25 Jahre Enterprise Java</title><link>https://javapro.svenruppert.com/30-jahre-java-25-jahre-enterprise-java/</link><pubDate>Mon, 30 Jun 2025 07:06:28 +0000</pubDate><guid>https://javapro.svenruppert.com/30-jahre-java-25-jahre-enterprise-java/</guid><description>Während wir 30 Jahre Java und 25 Jahre Enterprise Java feiern, ist es klar, dass diese Lösungen nicht nur überlebt haben, sondern sich weiterentwickelt und ihren dauerhaften Wert für Software-Ingenieure weltweit bewiesen haben.</description></item><item><title>Mit Vaadin Flow Rest Endpoints in Core Java konsumieren</title><link>https://javapro.svenruppert.com/mit-vaadin-flow-rest-endpoints-in-core-java-konsumieren/</link><pubDate>Mon, 23 Jun 2025 22:15:03 +0000</pubDate><guid>https://javapro.svenruppert.com/mit-vaadin-flow-rest-endpoints-in-core-java-konsumieren/</guid><description>&lt;h3 id="warum-rest-integration-in-vaadin-anwendungen-kein-nachgedanke-sein-sollte"&gt;Warum REST-Integration in Vaadin-Anwendungen kein Nachgedanke sein sollte&lt;/h3&gt;
&lt;p&gt;In modernen Webanwendungen ist die Kommunikation mit externen Services längst keine Sonderfunktion mehr, sondern ein integraler Bestandteil einer dienstorientierten Architektur. Selbst wenn Vaadin Flow als UI-Framework auf serverseitige Java-Logik setzt und dadurch eine hohe Kohärenz zwischen View- und Datenmodell erreicht, entsteht schnell der Bedarf, mit Systemen außerhalb der eigenen Anwendung zu kommunizieren. Das können einfache öffentliche APIs sein – etwa zur Anzeige von Wetterdaten oder Währungsumrechnungen – ebenso wie interne Unternehmensdienste, beispielsweise zur Lizenzprüfung, Benutzerverwaltung oder der Anbindung an ein zentrales ERP-System.&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>Eine visuelle Zeitreise durch die Entwicklung des JDK</title><link>https://javapro.svenruppert.com/eine-visuelle-zeitreise-durch-die-entwicklung-des-jdk/</link><pubDate>Mon, 16 Jun 2025 07:01:14 +0000</pubDate><guid>https://javapro.svenruppert.com/eine-visuelle-zeitreise-durch-die-entwicklung-des-jdk/</guid><description>&lt;p&gt;Das Java Development Kit (JDK) hat seit seiner Entstehung erhebliche Veränderungen durchlaufen. Von den Anfängen unter dem Motto &amp;ldquo;Write once, run everywhere&amp;rdquo;, über die Applet-Kriege, die erste Veröffentlichung des OpenJDK bis hin zum neuen Release-Zyklus, der uns mittlerweile seit acht Jahren begleitet – in 30 Jahren ist viel passiert.&lt;/p&gt;
&lt;p&gt;Der Großteil dieser Reise ist – zumindest aus heutiger Sicht – eher trocken dokumentiert: in Textform. Dort steht, wie viele Features hinzugefügt, geändert oder (ganz selten) entfernt wurden.&lt;/p&gt;</description></item><item><title>Kurze Links, klare Architektur – Ein URL-Shortener in Core Java</title><link>https://javapro.svenruppert.com/kurze-links-klare-architektur-ein-url-shortener-in-core-java/</link><pubDate>Tue, 10 Jun 2025 22:57:14 +0000</pubDate><guid>https://javapro.svenruppert.com/kurze-links-klare-architektur-ein-url-shortener-in-core-java/</guid><description>&lt;p&gt;Ein URL-Shortener wirkt harmlos – doch wer ihn falsch implementiert, öffnet Tür und Tor für Phishing, Enumeration und Datenabfluss. In diesem ersten Teil beleuchte ich die theoretischen und sicherheitsrelevanten Grundlagen eines URL-Shorteners in Java – ganz ohne Frameworks, aber mit Fokus auf Entropie, Kollisionstoleranz, Rate-Limiting, Gültigkeitslogik und digitaler Verantwortung. Im zweiten Teil folgt die vollständige Umsetzung: modular, nachvollziehbar und möglichst sicher.&lt;/p&gt;
&lt;h3 id="11-motivation-und-anwendungsfälle"&gt;&lt;strong&gt;1.1 Motivation und Anwendungsfälle&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In einer zunehmend fragmentierten und mobilen Informationswelt sind URLs nicht nur technische Adressierungsmechanismen, sondern zentrale Bausteine digitaler Kommunikation. Lange und schwer merkbare URLs wirken in sozialen Medien, E-Mails oder QR-Codes hinderlich, da sie nicht nur ästhetisch unattraktiv, sondern auch fehleranfällig bei der manuellen Eingabe sind. URL-Shortener begegnen diesem Problem durch die Erzeugung kompakter Repräsentationen, welche auf die ursprüngliche Zieladresse verweisen. Neben der verbesserten Lesbarkeit spielen dabei auch Aspekte wie statistische Auswertbarkeit, Zugriffskontrolle und Kampagnen-Tracking eine zentrale Rolle.&lt;/p&gt;</description></item><item><title>Wiederbelebung von Legacy-Code</title><link>https://javapro.svenruppert.com/wiederbelebung-von-legacy-code/</link><pubDate>Mon, 09 Jun 2025 07:01:17 +0000</pubDate><guid>https://javapro.svenruppert.com/wiederbelebung-von-legacy-code/</guid><description>Wie man 30 Jahre alte Java-Anwendungen für die nächsten 30 Jahre modernisiert</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>Kino, Code, Community: Die JCON EUROPE 2025 setzt neue Maßstäbe für Java-Events</title><link>https://javapro.svenruppert.com/kino-code-community-die-jcon-europe-2025-setzt-neue-massstaebe-fuer-java-events/</link><pubDate>Fri, 30 May 2025 08:40:10 +0000</pubDate><guid>https://javapro.svenruppert.com/kino-code-community-die-jcon-europe-2025-setzt-neue-massstaebe-fuer-java-events/</guid><description>&lt;p&gt;Von praxisnahen Workshops über Live-Coding im Kinosaal bis zur Mentoring-Revolution – die JCON EUROPE 2025 in Köln war ein Fest für Java-Fans aus aller Welt.&lt;/p&gt;
&lt;h2 id="ein-globales-treffen-der-java-community"&gt;Ein globales Treffen der Java Community&lt;/h2&gt;
&lt;p&gt;Vom 12. bis 15. Mai 2025 wurde Köln zum Epizentrum der internationalen Java-Community. Zur zehnten Ausgabe der JCON EUROPE pilgerten Entwickler aus über 60 Ländern und fünf Kontinenten in den Cinedom, um gemeinsam &lt;strong&gt;30 Jahre Java&lt;/strong&gt; zu feiern. Die Stimmung? Euphorisch, gemeinschaftlich – und immer mit einer Prise Humor.&lt;/p&gt;</description></item><item><title>Java im Ernstfall: Wie Eigenentwicklung Kontrolle schafft und kritische Systeme sichert</title><link>https://javapro.svenruppert.com/java-im-ernstfall-wie-eigenentwicklung-kontrolle-schafft-und-kritische-systeme-sichert/</link><pubDate>Wed, 28 May 2025 13:55:34 +0000</pubDate><guid>https://javapro.svenruppert.com/java-im-ernstfall-wie-eigenentwicklung-kontrolle-schafft-und-kritische-systeme-sichert/</guid><description>&lt;p&gt;&lt;strong&gt;Wenn IT versagt, merkt es keiner – bis es alle betrifft.&lt;/strong&gt;&lt;br&gt;
Ob im Krankenhaus, bei der Energieversorgung oder am Flughafen: In sicherheitskritischen Umgebungen ist der stabile Betrieb digitaler Systeme keine Option, sondern Pflicht. Genau hier zeigt sich, ob Infrastruktur resilient, skalierbar und unabhängig genug gebaut ist, um im Ernstfall standzuhalten.&lt;/p&gt;
&lt;p&gt;Ein prägnantes Beispiel ist die &lt;a href="https://www.fraport.com/de.html"&gt;Fraport AG&lt;/a&gt;, Betreiberin eines der größten Luftfahrtdrehkreuze Europas. Wenn dort Gepäck nicht ankommt oder sicherheitsrelevante Informationen verzögert eintreffen, steht nicht nur der Urlaub einzelner Passagiere auf dem Spiel – sondern die operative Stabilität des gesamten Betriebs. Hinter den Kulissen eines solchen Drehkreuzes läuft eine hochkomplexe digitale Infrastruktur, die rund um die Uhr funktionieren muss – trotz wachsender Anforderungen, alternder Legacy-Systeme und zunehmender Sicherheitsauflagen.&lt;/p&gt;</description></item><item><title>Die lange Geschichte von Log4j</title><link>https://javapro.svenruppert.com/die-lange-geschichte-von-log4j/</link><pubDate>Mon, 26 May 2025 07:00:04 +0000</pubDate><guid>https://javapro.svenruppert.com/die-lange-geschichte-von-log4j/</guid><description>&lt;p&gt;Logging ist die Kunst, ein System zu verstehen.&lt;/p&gt;
&lt;p&gt;Software protokolliert was gerade passiert in Log-Dateien, und Entwickler durchsuchen sie in der Hoffnung, das zu finden, was sie brauchen. Das Problem dabei? Systeme protokollieren selten die richtigen Dinge. Doch ohne diese Dateien würden wir im Blindflug fliegen, ohne zu wissen, dass überhaupt etwas schiefgelaufen ist.&lt;/p&gt;
&lt;p&gt;Dies ist die Geschichte von Apache Log4j - eines der ältesten Java-Frameworks, das heute noch verwendet wird. Ein Tool, das Entwicklern die Möglichkeit gab, ihre Systeme zu verstehen.&lt;/p&gt;</description></item><item><title>30 Jahre Java - Wie sich die Sprache entwickelt hat</title><link>https://javapro.svenruppert.com/30-jahre-java-wie-sich-die-sprache-entwickelt-hat/</link><pubDate>Mon, 19 May 2025 07:00:31 +0000</pubDate><guid>https://javapro.svenruppert.com/30-jahre-java-wie-sich-die-sprache-entwickelt-hat/</guid><description>&lt;p&gt;Wir feiern 30 Jahre Java. Zeit für einen Rückblick wie sich Java als Programmiersprache entwickelt hat. Wir werden sehen, wie Java verschiedene Paradigmen der Softwareentwicklung integriert hat, ohne seine klare Struktur zu verlieren. Es ist faszinierend, dass man trotz all dieser Veränderungen in Java immer noch genauso programmieren kann wie vor 30 Jahren.&lt;/p&gt;
&lt;p&gt;Als Java Mitte der 90er Jahre aufkam, war die objektorientierte Programmierung das dominierende Paradigma. Dies spiegelt sich in Java wider, das von Anfang an eine „rein“ objektorientierte Sprache war. „Alles ist ein Objekt“ kann wörtlich genommen werden. Mit Ausnahme der Primitiven ist alles von der Basisklasse „Objekt“ abgeleitet. Anfangs hielt sich die Sprache strikt an dieses Paradigma. Dies änderte sich im Laufe der Zeit, als die Sprache immer mehr Elemente des funktionalen Programmierparadigmas übernahm. Diese Entwicklung lässt sich auch in anderen Programmiersprachen beobachten.&lt;/p&gt;</description></item><item><title>Von Reactive Streams zu Virtual Threads</title><link>https://javapro.svenruppert.com/von-reactive-streams-zu-virtual-threads/</link><pubDate>Mon, 12 May 2025 07:01:28 +0000</pubDate><guid>https://javapro.svenruppert.com/von-reactive-streams-zu-virtual-threads/</guid><description>&lt;p&gt;Virtual Threads bieten eine schnelle und ressourcenschonende Threading-Lösung für die JVM – sowohl im Hinblick auf Speicherverbrauch als auch auf Umschaltgeschwindigkeit. Sie versprechen die Rückkehr zu einem direkten, synchronen Programmiermodell. Doch reicht das aus, um den Status quo im Bereich Daten-Streaming infrage zu stellen? Können wir das Beste aus beiden Welten haben: die Einfachheit, die Virtual Threads versprechen, und gleichzeitig die Robustheit und Sicherheit von Reactive Streams? Finden wir es heraus!&lt;/p&gt;</description></item><item><title>Vektor-Embedding in Java-Anwendungen: Gen-AI-Funktionen direkt aus der Datenbank</title><link>https://javapro.svenruppert.com/vektor-embedding-in-java-anwendungen-genai-funktionen-direkt-aus-der-datenbank/</link><pubDate>Tue, 06 May 2025 12:01:21 +0000</pubDate><guid>https://javapro.svenruppert.com/vektor-embedding-in-java-anwendungen-genai-funktionen-direkt-aus-der-datenbank/</guid><description>&lt;p&gt;Generative KI (GenAI) hat sich in den vergangenen Jahren rasant weiterentwickelt und findet zunehmend Einzug in die praktische Softwareentwicklung. Was früher als Forschungsfeld galt, wird heute zum Werkzeug für den Entwickleralltag – auch im Java-Umfeld. Eine Schlüsselrolle spielen dabei Vektor-Embeddings: Sie ermöglichen Funktionen wie semantische Suche, Textklassifikation oder Empfehlungssysteme und eröffnen damit völlig neue Anwendungsmöglichkeiten.&lt;/p&gt;
&lt;p&gt;Doch wie lassen sich diese Technologien in bestehende Java-Anwendungen einbinden, ohne dass komplexe Frameworks oder externe Cloud-Dienste notwendig werden?&lt;/p&gt;</description></item><item><title>So beschleunigen sie existierende Deployments mit den richtigen JVM-Features</title><link>https://javapro.svenruppert.com/so-beschleunigen-sie-existierende-deployments-mit-den-richtigen-jvm-features/</link><pubDate>Mon, 21 Apr 2025 07:00:11 +0000</pubDate><guid>https://javapro.svenruppert.com/so-beschleunigen-sie-existierende-deployments-mit-den-richtigen-jvm-features/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6628huqjF9s&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=14"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In der heutigen Tech-Landschaft sehen sich Java-Anwendungen mit einer entscheidenden Herausforderung konfrontiert. Unternehmen müssen steigenden Performance-Anforderungen gerecht werden und gleichzeitig die Kosten für die Infrastruktur unter Kontrolle halten – und das ohne kostspielige Neuentwicklungen.&lt;/p&gt;
&lt;p&gt;Diese Herausforderung hat sich mit der Einführung von Cloud Computing noch weiter verschärft. Jede Millisekunde Latenz und jedes Megabyte an Speicher wirken sich nun direkt auf die laufenden Kosten aus. Die Zahlen sind beachtlich: Basierend auf meinen Erfahrungen können schlecht konfigurierte JVMs die Cloud-Kosten um 30–50 % erhöhen. Für große Unternehmen entspricht das Millionen an vermeidbaren Ausgaben.&lt;/p&gt;</description></item><item><title>Hitchhiker's Guide to Java Performance</title><link>https://javapro.svenruppert.com/hitchhikers-guide-to-java-performance/</link><pubDate>Wed, 02 Apr 2025 12:17:42 +0000</pubDate><guid>https://javapro.svenruppert.com/hitchhikers-guide-to-java-performance/</guid><description>&lt;h3 id="vergangenheit-gegenwart-und-zukunft"&gt;Vergangenheit, Gegenwart und Zukunft&lt;/h3&gt;
&lt;p&gt;In den letzten 30 Jahren hat sich Java von einer exotischen „write once, run anywhere“-Sprache zu einer der weltweit dominierenden Plattformen für die Softwareentwicklung entwickelt. In den Anfangsjahren galt Java im Vergleich zu Sprachen wie C/C++ zu Recht als langsam, was vor allem auf den anfänglichen Interpreter-Ansatz zurückzuführen war. Die letzten 30 Jahre haben bewiesen, dass das VM-Konzept mit der adaptiven Optimierung der HotSpot-Engine langfristig die effizientere Lösung ist.&lt;/p&gt;</description></item></channel></rss>