<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web Development on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/categories/web-development/</link><description>Recent content in Web Development on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Mon, 13 Apr 2026 07:02:24 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/categories/web-development/index.xml" rel="self" type="application/rss+xml"/><item><title>Joyful web development with Hypermedia-Driven Applications and HTMX</title><link>https://javapro.svenruppert.com/joyful-web-development-with-hypermedia-driven-applications-and-htmx/</link><pubDate>Mon, 13 Apr 2026 07:02:24 +0000</pubDate><guid>https://javapro.svenruppert.com/joyful-web-development-with-hypermedia-driven-applications-and-htmx/</guid><description>&lt;p&gt;Single-Page Applications, State Management, Hydration, Client-Side Routing – moderne Webanwendungen strotzen vor Tools, Frameworks und Komplexität. Dabei war die ursprüngliche Idee des Webs eigentlich relativ einfach. In diesem Artikel beleuchten wir die Ursprünge von Hypermedia und wie Hypermedia-Driven Applications uns heute helfen können, wieder Spaß an der Webentwicklung zu finden – ohne die Komplexität typischer Single-Page-Anwendungen.&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/02/Copilot_20260210_213207.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="das-komplexitätsproblem"&gt;Das Komplexitätsproblem&lt;/h2&gt;
&lt;p&gt;Eine typische Webanwendung besteht heutzutage meist aus einer Server-Komponente, die eine JSON-API bereitstellt.&lt;br&gt;
Diese APIs werden dann von einer Single-Page-Anwendung als Frontend konsumiert.&lt;br&gt;
Während die Auswahl auf Serverseite noch relativ überschaubar ist, sind die &lt;a href="https://hemaks.org/posts/javascript-fatigue-20-are-modern-frameworks-killing-web-development/"&gt;Möglichkeiten im Frontend nahezu unerschöpflich und werden jeden Tag mehr&lt;/a&gt;).&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>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 - 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>Wenn Entwickler auf Designer treffen: Erkenntnisse aus Vibe Coding und der Kunst des kreativen Ausdrucks</title><link>https://javapro.svenruppert.com/wenn-entwickler-auf-designer-treffen-erkenntnisse-aus-vibe-coding-und-der-kunst-des-kreativen-ausdrucks/</link><pubDate>Mon, 05 Jan 2026 07:00:36 +0000</pubDate><guid>https://javapro.svenruppert.com/wenn-entwickler-auf-designer-treffen-erkenntnisse-aus-vibe-coding-und-der-kunst-des-kreativen-ausdrucks/</guid><description>&lt;p&gt;Hast du dich jemals gefragt, was passiert, wenn man Klimadaten, künstliche Intelligenz und eine Gruppe kreativer Menschen zusammenbringt? Ich habe es kürzlich bei einem &lt;strong&gt;„Future Fridays”&lt;/strong&gt;-Workshop herausgefunden, einer Zusammenarbeit zwischen infogr8 und der Data Visualization Society. Das Ziel war es, mit KI-gestütztem Creative Coding zu experimentieren, um Klimadaten zu visualisieren.&lt;/p&gt;
&lt;p&gt;Es war eine faszinierende Erfahrung, bei der Datenkreative und Designer – zusammen mit einigen Entwicklerinnen – zusammenkamen. Wir wollten Visualisierungen erstellen, die nicht nur Zahlen anzeigen, sondern tatsächlich Emotionen wecken und zum Handeln anregen. In diesem Artikel zeige ich dir, was ich darüber gelernt habe, wie man Daten zum Leben erweckt, und warum du als Entwickler dich für KI-gestütztes Codieren interessieren solltest.&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 - 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 - 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>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>Die Blockchain in deiner Java Anwendung</title><link>https://javapro.svenruppert.com/die-blockchain-in-deiner-java-anwendung/</link><pubDate>Mon, 01 Sep 2025 07:01:53 +0000</pubDate><guid>https://javapro.svenruppert.com/die-blockchain-in-deiner-java-anwendung/</guid><description>&lt;h2 id="kurzes-vorwort"&gt;kurzes Vorwort&lt;/h2&gt;
&lt;p&gt;Dieser Artikel befasst mit der Integration von Blockchain Mechanismen in Java Anwendungen. Hierbei befassen wir uns nicht mit Preisen oder insgesamt einzelnen Kryptowährungen, dies ist mir wichtig zu Beginn zu erwähnen. Im Verlaufe des Artikels nenne ich Blockchain Netzwerke, sodass ich klarstellen möchte, es handelt sich hierbei ausdrücklich nicht um Anlageberatung oder Werbung für diese Netzwerke und deren Kryptowährungen. Es handelt sich um eine technische Erklärung der Integration von Blockchain in Java mit Web3j.&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>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>Microfrontends mit Module Federation für bestehende Anwendungen - Ein Erfahrungsbericht</title><link>https://javapro.svenruppert.com/microfrontends-mit-module-federation-fuer-bestehende-anwendungen-ein-erfahrungsbericht/</link><pubDate>Mon, 11 Aug 2025 07:00:34 +0000</pubDate><guid>https://javapro.svenruppert.com/microfrontends-mit-module-federation-fuer-bestehende-anwendungen-ein-erfahrungsbericht/</guid><description>&lt;p&gt;&lt;em&gt;Die Anwendung ist seit mehreren Jahren produktiv – und dann auf einen Hype wie Microfrontends aufspringen, geht das überhaupt? Wir haben das Experiment gewagt und unser bestehendes Frontend umgebaut und Microfrontends mit Module Federation eingeführt. Was uns dazu bewogen hat und was wir dabei gelernt haben, lernt ihr in diesem Artikel.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Wir hatten folgende Situation: zwei Projektteams, welche voneinander unabhängige Webportale in derselben Firma entwickeln, sollen möglichst viele Komponenten wiederverwenden. Die Wiederverwendung wurde beiden Projekten als Ziel vom Management vorgegeben.&lt;/p&gt;</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>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></channel></rss>