<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sven Ruppert on JAVAPRO Germany</title><link>https://javapro.svenruppert.com/authors/sven-ruppert/</link><description>Recent content in Sven Ruppert on JAVAPRO Germany</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Wed, 22 Apr 2026 07:06:24 +0000</lastBuildDate><atom:link href="https://javapro.svenruppert.com/authors/sven-ruppert/index.xml" rel="self" type="application/rss+xml"/><item><title>URLShortener - Simple Bulk Creation</title><link>https://javapro.svenruppert.com/urlshortener-simple-bulk-creation/</link><pubDate>Wed, 22 Apr 2026 07:06:24 +0000</pubDate><guid>https://javapro.svenruppert.com/urlshortener-simple-bulk-creation/</guid><description>&lt;p&gt;Die Erzeugung von Kurzlinks wirkt auf den ersten Blick wie ein ausgesprochen einfacher Anwendungsfall. Eine Zieladresse wird eingegeben; das System erzeugt einen Shortcode, der unmittelbar verwendet werden kann. Solange sich dieser Ablauf auf einzelne Links beschränkt, bleibt die Benutzerführung überschaubar. Mit dem Übergang zur Massenanlage verändert sich die Situation jedoch grundlegend. Aus einer einzelnen Eingabe wird ein Arbeitsprozess, in dem mehrere URLs gleichzeitig erfasst, geprüft, bewertet und schließlich erzeugt werden müssen. Genau an diesem Punkt reicht es nicht mehr aus, eine bestehende Erfassungsmaske lediglich um weitere Eingabemöglichkeiten zu ergänzen. Je größer die Menge der zu verarbeitenden URLs wird, desto stärker rückt die Führung durch den Prozess in den Mittelpunkt.&lt;/p&gt;</description></item><item><title>Vaadin Signals - Since 25.1 - Teil 2</title><link>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-2/</link><pubDate>Wed, 15 Apr 2026 07:16:02 +0000</pubDate><guid>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-2/</guid><description>&lt;h2 id="nebenläufigkeit--thread-sicherheit"&gt;Nebenläufigkeit &amp;amp; Thread-Sicherheit&lt;/h2&gt;
&lt;p&gt;Die Sicherheit von Threads ist das Erste, was erfahrene Java-Entwickler hinterfragen, wenn sie auf eine neue Abstraktion stoßen. Signals gehen diese Frage mit zwei grundlegend unterschiedlichen Ansätzen an, je nachdem, ob der Bundesstaat sitzungslokal oder sitzungsweit ist.&lt;/p&gt;
&lt;p&gt;Lokale Signale haben eine eigene Sperre, die das Lesen und Schreiben zwischen dem UI-Thread einer Sitzung und den von dieser Sitzung ausgelösten Hintergrundaufgaben koordiniert. Daher ist jeder, der in derselben Sitzung ein ValueSignal aus einem CompletableFuture-Callback schreibt, sicher.&lt;/p&gt;</description></item><item><title>Vaadin Signals - Since 25.1 - Teil 1</title><link>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-1/</link><pubDate>Tue, 14 Apr 2026 07:13:07 +0000</pubDate><guid>https://javapro.svenruppert.com/vaadin-signals-since-25-1-teil-1/</guid><description>&lt;h2 id="motivation-was-war-bisher-das-problem"&gt;Motivation: Was war bisher das Problem?&lt;/h2&gt;
&lt;p&gt;Jeder, der schon längere Zeit mit Vaadin Flow arbeitet, kennt zwei Arten von Schmerz – und beide werden angesprochen.&lt;/p&gt;
&lt;p&gt;Das Erste ist offensichtlich: Eine Hintergrundoperation schreibt Daten, mehrere Browser-Tabs müssen synchronisiert werden, und plötzlich bist du tief in UI.access(), @Push und der Frage, warum Tab B nicht reagiert, obwohl Tab A gerade etwas geschrieben hat.&lt;/p&gt;
&lt;p&gt;Die zweite ist subtiler, aber grundlegender: Selbst in rein lokalem, Einzelbenutzer-UI-Code – einem Formular, einem Einkaufswagen, einer detaillierten Ansicht – ist der Zustand über Komponentenvariablen verteilt, manuell synchronisiert und zwingend verwaltet. Wenn sich ein Wert ändert, ruft man component.setValue() auf, was ein Label aktualisiert und den Status des Buttons festlegt. Der Entwickler koordiniert, was geändert werden muss – nicht das Framework.&lt;/p&gt;</description></item><item><title>Url-Shortener - Redirect-Statistiken - Teil 2</title><link>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-2/</link><pubDate>Thu, 09 Apr 2026 07:05:03 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-2/</guid><description>&lt;h2 id="die-vaadin-ui-komponenten-im-detail"&gt;Die Vaadin-UI-Komponenten im Detail&lt;/h2&gt;
&lt;p&gt;In diesem Teil geht es nun weiter mit der Implementierung von den Redirect-Statistiken in dem Open Source Tool URL-Shortener. Den ersten Teil findest Du hier: &lt;strong&gt;&lt;a href="https://3g3.eu/Hfzsf3"&gt;https://3g3.eu/Hfzsf3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte findest Du auf GitHub unter&lt;/strong&gt; &lt;a href="https://3g3.eu/url"&gt;&lt;strong&gt;https://3g3.eu/url&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/04/image-4-1024x382.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="die-komponentenarchitektur"&gt;Die Komponentenarchitektur&lt;/h3&gt;
&lt;p&gt;Die Vaadin-UI für die Statistik-Funktionalität besteht aus mehreren eng verzahnten, aber bewusst entkoppelten Komponenten. Im Zentrum stehen zwei Views: die StatisticsView als Übersichtsseite und die StatisticsDetailView für die Analyse einzelner ShortCodes. Beide nutzen die wiederverwendbare StatisticsToolbar für Datumsauswahl und Granularitätssteuerung. Diese Trennung folgt dem Prinzip der Komposition über Vererbung – ein Muster, das sich in Vaadin-Anwendungen bewährt hat.&lt;/p&gt;</description></item><item><title>Url-Shortener - Redirect-Statistiken - Teil 1</title><link>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-1/</link><pubDate>Tue, 07 Apr 2026 12:59:48 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-redirect-statistiken-teil-1/</guid><description>&lt;h3 id="redirect-statistiken-in-vaadin-flow-vom-event-bis-zur-visualisierung"&gt;Redirect-Statistiken in Vaadin Flow: Vom Event bis zur Visualisierung&lt;/h3&gt;
&lt;p&gt;Ein URL-Shortener erfüllt auf den ersten Blick eine triviale Aufgabe: Er nimmt eine lange URL entgegen und liefert eine kurze zurück. Der eigentliche Wert entsteht jedoch erst durch das, was nach dem Erstellen passiert – nämlich die Nutzung. Wie oft wird ein Link aufgerufen? Zu welchen Tageszeiten? Über welchen Zeitraum verteilt? Diese Fragen sind nicht nur aus Neugier interessant, sondern bilden die Grundlage für fundierte Entscheidungen. Wer einen Link in einer Kampagne einsetzt, möchte wissen, ob die Kampagne funktioniert. Wer einen Link intern teilt, möchte verstehen, ob die Zielgruppe ihn überhaupt nutzt.&lt;/p&gt;</description></item><item><title>Ein Vaadin-Starterprojekt mit klarem Fokus</title><link>https://javapro.svenruppert.com/ein-vaadin-starterprojekt-mit-klarem-fokus/</link><pubDate>Wed, 18 Mar 2026 07:04:21 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-vaadin-starterprojekt-mit-klarem-fokus/</guid><description>&lt;p&gt;Viele Beispielprojekte überfrachten den Einstieg, weil sie zu viele Themen gleichzeitig aufzeigen. Routing, Datenzugriff, Security, Formulare, Theme-Anpassungen und weitere Integrationen werden dann in einer einzigen Demo dargestellt. Für Leser wird es dadurch schwieriger, den eigentlichen Aufbau des Projekts zu erkennen.&lt;/p&gt;
&lt;p&gt;Dieses Projekt verfolgt einen anderen Ansatz. Im Mittelpunkt steht ein kompaktes Gerüst aus AppShell, MainLayout, mehreren Views, einem kleinen Service, einem eigenen Theme und vorbereiteter Internationalisierung. Ziel ist es, die grundlegenden Bausteine einer Vaadin-Flow-Anwendung so sichtbar zu machen, dass ihr Zusammenspiel nachvollziehbar bleibt.&lt;/p&gt;</description></item><item><title>Internationalisierung (i18n) in einer Vaadin-Anwendung</title><link>https://javapro.svenruppert.com/internationalisierung-i18n-in-einer-vaadin-anwendung/</link><pubDate>Wed, 11 Mar 2026 07:06:19 +0000</pubDate><guid>https://javapro.svenruppert.com/internationalisierung-i18n-in-einer-vaadin-anwendung/</guid><description>&lt;p&gt;Moderne Webanwendungen werden selten nur von Benutzern derselben Sprache verwendet. Selbst interne Werkzeuge erreichen häufig internationale Teams oder werden in verschiedenen Ländern eingesetzt. Eine mehrsprachige Benutzeroberfläche ist daher keine Luxusfunktion, sondern ein wichtiger Bestandteil der Benutzerfreundlichkeit.&lt;/p&gt;
&lt;p&gt;Auch das Open‑Source‑Projekt URL‑Shortener profitiert von einer klaren Internationalisierungsstrategie. Die Anwendung richtet sich an Entwickler, Administratoren und andere Benutzer, die Links verwalten, analysieren oder verteilen möchten. Damit die Oberfläche unabhängig von der Herkunft der Benutzer verständlich bleibt, unterstützt die Anwendung mehrere Sprachen.&lt;/p&gt;</description></item><item><title>Saubere Styles in Vaadin: CSS statt getStyle().set()</title><link>https://javapro.svenruppert.com/saubere-styles-in-vaadin-css-statt-getstyle-set/</link><pubDate>Wed, 04 Mar 2026 13:25:41 +0000</pubDate><guid>https://javapro.svenruppert.com/saubere-styles-in-vaadin-css-statt-getstyle-set/</guid><description>&lt;p&gt;Vaadin Flow ermöglicht es, komplette Webanwendungen ausschließlich in Java zu entwickeln. Komponenten, Layouts, Navigation und sogar komplexe UI-Strukturen lassen sich serverseitig modellieren, ohne direkt mit HTML oder JavaScript arbeiten zu müssen. Dieser Ansatz ist einer der Hauptgründe, warum Vaadin besonders in Java-zentrierten Projekten beliebt ist.&lt;/p&gt;
&lt;p&gt;Mit zunehmender Größe eines Projekts entsteht jedoch ein typisches Problem: Styling wird häufig direkt im Java-Code vorgenommen. Vaadin erlaubt dies bequem über die Methode getStyle().set(&amp;hellip;). Dadurch lassen sich Abstände, Farben oder Layout-Eigenschaften schnell anpassen. In kleinen Prototypen wirkt dieses Vorgehen zunächst harmlos und sogar praktisch.&lt;/p&gt;</description></item><item><title>Ein unerwartet problemloses Upgrade</title><link>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</link><pubDate>Wed, 18 Feb 2026 07:05:47 +0000</pubDate><guid>https://javapro.svenruppert.com/ein-unerwartet-problemloses-upgrade/</guid><description>&lt;p&gt;Der Ausgangspunkt für diesen Artikel war kein strategischer Architektur‑Workshop und kein langfristig geplanter Migrationspfad, sondern ein vergleichsweise unspektakulärer Schritt: die Aktualisierung der Versionsnummern im bestehenden Projekt. Im Rahmen der Weiterentwicklung meines URL‑Shortener‑Projekts stand ohnehin ein reguläres Dependency‑Update an. Vaadin 25 ( &lt;a href="https://3g3.eu/vdn25"&gt;&lt;strong&gt;https://3g3.eu/vdn25&lt;/strong&gt;&lt;/a&gt; ) war zu diesem Zeitpunkt bereits verfügbar – also lag es nahe, den Schritt einfach zu gehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Quelltexte zu dem Projekt befinden sich&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;auf GitHub unter&lt;/strong&gt; &lt;a href="https://3g3.eu/url"&gt;&lt;strong&gt;https://3g3.eu/url&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro.svenruppert.com/uploads/sites/1/2026/02/image-11-1024x632.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Die Erwartungshaltung war dabei realistisch, vielleicht sogar leicht skeptisch. Ein neues Major‑Release, neue Mindestanforderungen, ein modernisierter Stack – all das sind üblicherweise gute Gründe, zumindest mit kleineren Anpassungen oder ersten Reibungen zu rechnen. Entsprechend gering war die Hoffnung, dass ein einfaches Hochziehen der Versionsnummern tatsächlich ausreichen könnte.&lt;/p&gt;</description></item><item><title>URL-Shortener - Import und Vaadin</title><link>https://javapro.svenruppert.com/url-shortener-import-und-vaadin/</link><pubDate>Wed, 11 Feb 2026 07:12:18 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-import-und-vaadin/</guid><description>&lt;h2 id="einordnung-warum-ein-import-überhaupt-eine-ui-braucht"&gt;Einordnung: Warum ein Import überhaupt eine UI braucht&lt;/h2&gt;
&lt;p&gt;Importfunktionen werden in Anwendungen häufig als rein technisches Detail betrachtet. Daten werden eingelesen, verarbeitet und stehen anschließend zur Verfügung – idealerweise ohne weitere Interaktion. In der Praxis ist ein Import jedoch selten ein unsichtbarer Vorgang. Er markiert einen Übergang zwischen bestehenden Systemzuständen, zwischen alten und neuen Daten, zwischen Vertrauen und Kontrolle. Genau an dieser Stelle entsteht die Notwendigkeit einer Benutzeroberfläche.&lt;/p&gt;
&lt;p&gt;Im URL-Shortener ist der Import nicht als Hintergrundprozess konzipiert, sondern als expliziter, sichtbarer Vorgang. Die UI übernimmt dabei nicht die Rolle eines fachlichen Entscheiders, sondern die eines transparenten Vermittlers. Sie schafft einen klar abgegrenzten Raum, in dem ein Import stattfinden kann, ohne bestehende Daten unmittelbar zu verändern. Allein diese Entkopplung rechtfertigt bereits die Existenz einer eigenen Import-Oberfläche.&lt;/p&gt;</description></item><item><title>URL-Shortener - JSON-Export in Vaadin Flow</title><link>https://javapro.svenruppert.com/url-shortener-json-export-in-vaadin-flow/</link><pubDate>Thu, 05 Feb 2026 16:10:28 +0000</pubDate><guid>https://javapro.svenruppert.com/url-shortener-json-export-in-vaadin-flow/</guid><description>&lt;p&gt;Exportfunktionen werden häufig als rein technische Nebenaufgabe betrachtet: ein Button, ein Download, fertig. In einer Vaadin-basierten Anwendung zeigt sich jedoch sehr schnell, dass der Export weit mehr ist als das Schreiben von Daten in eine Datei. Er ist eine direkte Verlängerung des UI-Zustands, ein infrastruktureller Vertrag zwischen Frontend und Backend – und ein entscheidender Faktor für Wartbarkeit und Vorhersagbarkeit.&lt;/p&gt;
&lt;p&gt;Dieser Artikel zeigt, wie im URL-Shortener-Projekt ein JSON-basierter Export bewusst als UI-getriebener Workflow gestaltet wurde. Der Fokus liegt dabei nicht auf Dateiformaten oder komplexen Backend-Abstraktionen, sondern auf der sauberen Einbettung des Exports in eine Vaadin-Flow-Oberfläche: Filterkopplung, Download-Mechanik, Paging-Grenzen und klare Verantwortlichkeiten zwischen UI, Client und Server.&lt;/p&gt;</description></item><item><title>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>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>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>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>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>Wenn hashCode() lügt und equals() hilflos ist</title><link>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</link><pubDate>Sun, 08 Jun 2025 09:53:06 +0000</pubDate><guid>https://javapro.svenruppert.com/wenn-hashcode-luegt-und-equals-hilflos-ist/</guid><description>&lt;p&gt;Ein tiefer Blick in Java’s HashMap-Fallen – visuell demonstriert mit Vaadin Flow&lt;/p&gt;
&lt;h3 id="die-stille-gefahr-in-der-standardbibliothek"&gt;&lt;strong&gt;Die stille Gefahr in der Standardbibliothek&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Die Verwendung von HashMap und HashSet gehört zum täglich Brot in der Java-Entwicklung. Diese Datenstrukturen bieten exzellente Performance für Lookup- und Einfügeoperationen – solange ihre fundamentalen Annahmen erfüllt bleiben. Eine davon lautet: Der hashCode() eines Schlüssels bleibt stabil. Was aber, wenn das nicht der Fall ist?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u-tSy27RXA8"&gt;https://www.youtube.com/watch?v=u-tSy27RXA8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Genau hier lauert eine der subtilsten und zugleich gefährlichsten Fallen der Java-Standardbibliothek: mutable Schlüsselobjekte. In diesem Artikel zeigen wir nicht nur, warum diese Konstellation problematisch ist, sondern führen das Phänomen interaktiv mit Vaadin Flow vor. Leserinnen und Leser erfahren, wie die HashMap intern funktioniert, warum equals() allein nicht genügt, und wie man mit modernen Sprachmitteln wie record robuste, unveränderliche Schlüssel erzeugt.&lt;/p&gt;</description></item><item><title>Erstellen einer einfachen Datei-Up/Download-Anwendung mit Vaadin Flow</title><link>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</link><pubDate>Tue, 03 Jun 2025 13:14:00 +0000</pubDate><guid>https://javapro.svenruppert.com/erstellen-einer-einfachen-datei-up-download-anwendung-mit-vaadin-flow/</guid><description>&lt;p&gt;Vaadin Flow ist ein leistungsstarkes Framework zur Erstellung moderner Webanwendungen in Java, bei denen die gesamte UI-Logik serverseitig implementiert wird. In diesem Blogpost bauen wir Schritt für Schritt eine einfache Datei-Verwaltungs-Applikation, die es Nutzern erlaubt, Dateien hochzuladen, auf dem Server zu speichern und bei Bedarf wieder herunterzuladen. Dies ist eine gute Möglichkeit zu zeigen, wie man Schritt für Schritt den Schutz vor CWE-22, CWE-377 und CWE-778 aufbauen kann.&lt;/p&gt;
&lt;p&gt;Wir fokussieren uns in diesem Beispiel ausschließlich auf die Funktionalität und nicht auf die grafische Gestalltung. Diese ist absichtlich sehr einfach gehalten worden um sich auf die technischen Aspekte zu konzentrieren.&lt;/p&gt;</description></item><item><title>Executive Order und der Solarwinds Hack - Was bedeutet das für uns?</title><link>https://javapro.svenruppert.com/executive-order-und-der-solarwinds-hack-was-bedeutet-das-fuer-uns/</link><pubDate>Fri, 25 Nov 2022 12:46:44 +0000</pubDate><guid>https://javapro.svenruppert.com/executive-order-und-der-solarwinds-hack-was-bedeutet-das-fuer-uns/</guid><description>&lt;p&gt;In den letzten zwei Jahren haben wir einiges im Bereich Cybersecurity lernen müssen. Die neuen Angriffsvektoren werden immer mehr ausgefeilter und richten sich immer mehr gegen die Wertschöpfungskette im allgemeinen. Aber was bedeutet das für uns? Was kann man dagegen unternehmen und welche Reaktionen sind von staatlicher Seite schon erfolgt?&lt;/p&gt;
&lt;p&gt;Beginnen wir hier mit der Geschichte die all das hier ins rollen gebracht hat und dafür sorgte das die allgemeine Aufmerksamkeit auf die Verwundbarkeiten der generellen IT Infrastruktur gelenkt worden ist. Die Rede ist hier von dem SolarWinds Hack. Was passierte hier und was noch wichtiger ist; Was sind die lessons learned aus diesem Vorfall?&lt;/p&gt;</description></item><item><title>Cybersecurity - Was ist SAST, DAST, IAST und RASP? - ein kleines Intro</title><link>https://javapro.svenruppert.com/cybersecurity-was-ist-sast-dast-iast-und-rasp-ein-kleines-intro/</link><pubDate>Wed, 27 Jul 2022 10:27:40 +0000</pubDate><guid>https://javapro.svenruppert.com/cybersecurity-was-ist-sast-dast-iast-und-rasp-ein-kleines-intro/</guid><description>&lt;p&gt;In diesem Beitrag werden wir uns die Unterschiede der verschiedenen Abwehrtechniken im Bereich der Cybersecurity ansehen. Hier kann man vier Hauptgruppen identifizieren, die wir eine nach der anderen kurz durchgehen werden um die Vor- und Nach-teile darzustellen.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Wer das Video zu diesem Blogpost&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;auf Youtube sehen möchte:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://youtu.be/pA1UnQ6J6Nc"&gt;https://youtu.be/pA1UnQ6J6Nc&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;h3 id="sast---static-application-security-testing"&gt;SAST - Static Application Security Testing&lt;/h3&gt;
&lt;p&gt;SAST bezeichnet den Vorgang bei dem die Komponenten von einer Anwendung einer statischen Analyse unterzogen werden. Hierbei werden nicht nur Sicherheitslücken gesucht, sondern auch die Lizenzen der einzelnen Elemente bestimmt. Im nachfolgenden werde ich mich in diesem Beitrag allerdings ausschließlich um die Betrachtung der Vulnerabilities kümmern.&lt;/p&gt;</description></item><item><title>Die typische Lebenslinie einer Sicherheitslücke</title><link>https://javapro.svenruppert.com/die-typische-lebenslinie-einer-sicherheitsluecke/</link><pubDate>Wed, 30 Jun 2021 11:00:42 +0000</pubDate><guid>https://javapro.svenruppert.com/die-typische-lebenslinie-einer-sicherheitsluecke/</guid><description>&lt;p&gt;**Immer wieder lesen wir in den IT-Nachrichten etwas über gefundene Sicherheitslücken. Je schwerer die Einstufung dieser Lücke ist, desto mehr Aufmerksamkeit bekommen diese Informationen in der allgemeinen Presse. Über all die gefundenen Sicherheitslücken, die nicht den Bekanntheitsgrad von zum Beispiel dem SolarWinds Hack erlangen, hört und liest man meistens nichts. Aber wie ist die typische Lebenslinie einer solchen Sicherheitslücke? ** Beginnen wir mit der Geburt einer Sicherheitslücke. Das kann auf zwei unterschiedlich motivierte Arten geschehen. Zum einen kann es jedem Entwickler passieren, dass er durch eine unglückliche Kombination von Quelltextstücken eine Sicherheitslücke erzeugt. Zum anderen kann es auch auf einer gezielten Manipulation beruhen. Allerdings hat das im Wesentlichen keine Auswirkungen auf den weiteren Verlauf der Lebenslinie einer Sicherheitslücke. Wir gehen im nachfolgenden einfach davon aus, dass eine Sicherheitslücke erzeugt worden ist und diese sich nun aktiv in irgendeiner Software befindet. Dabei kann es sich um ausführbare Programme handeln oder auch um angebotene Bibliotheken die als Dependency in andere Softwareprojekte eingebunden wird.&lt;/p&gt;</description></item><item><title>Builder-Pattern auf Steroiden</title><link>https://javapro.svenruppert.com/builder-pattern-auf-steroiden/</link><pubDate>Tue, 23 Mar 2021 11:45:20 +0000</pubDate><guid>https://javapro.svenruppert.com/builder-pattern-auf-steroiden/</guid><description>&lt;p&gt;&lt;strong&gt;Das Buch der GangOfFour gehört bei so ziemlich jedem Ausbildungszweig der Informatik mit zu der Grundlagenlektüre. Dort werden die Basispattern beschrieben und gruppiert, so dass man einen guten Start in das Thema DesignPattern bekommt. Aber wie sieht es dann später in der Verwendung aus? Hier werden wir das eine oder andere Pattern genauer unter die Lupe nehmen und erweitern.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Das Builder-Pattern erfreut sich derzeitig immer größerer Beliebtheit, ermöglicht es einem doch die Konstruktion eines fluent-API. Angenehm ist es ebenfalls, dass eine IDE dieses Pattern recht einfach generieren kann. Dem Einsatz steht nun also nichts mehr im Wege, aber&amp;hellip; Wie sieht es mit der Verwendung im täglichen Leben aus?&lt;/p&gt;</description></item><item><title>Delegation versus Inheritance in grafischen Oberflächen</title><link>https://javapro.svenruppert.com/delegation-versus-inheritance-in-grafischen-oberflaechen/</link><pubDate>Tue, 16 Mar 2021 11:30:52 +0000</pubDate><guid>https://javapro.svenruppert.com/delegation-versus-inheritance-in-grafischen-oberflaechen/</guid><description>&lt;p&gt;&lt;strong&gt;In diesem Artikel werden wir den Unterschied zwischen den Vererbungs- und Delegierungskonzepten untersuchen. Oder, um es besser auszudrücken, warum ich die Delegation bevorzuge und warum ich diese selten verwendete Funktion in Java hervorheben möchte.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;Diesen Artikel gibt es auch als Youtube Video auf meinem Kanal und ist zu finden unter&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/If_hFAtlF_M"&gt;&lt;em&gt;&lt;strong&gt;Youtube - German - 4k&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;Die Herausforderung, vor der wir heute stehen, ist im Bereich grafischer Benutzeroberflächen wie Desktop- oder Web-Apps weit verbreitet. Java wird häufig als Entwicklungssprache für beide Welten verwendet, und es spielt keine Rolle, ob wir uns im klassischen Swing, JavaFX oder im Bereich von Web-Frameworks wie Vaadin befinden. Ich habe mich explizit für ein Pseudoklassenmodell in Java entschieden, da ich die Entwurfsmuster hier ohne technische Details betrachten möchte. Ziel ist es, eine benutzerdefinierte Komponente zu erstellen, die aus einem Texteingabefeld und einer Schaltfläche besteht. Beide Elemente sollten nebeneinander angezeigt werden, d.h. in einem horizontalen Layout. Die jeweiligen Komponenten haben in diesem Beispiel keine Funktion. Ich möchte hier ausschließlich die Unterschiede zwischen Vererbung und Delegation herausarbeiten.&lt;/p&gt;</description></item><item><title>Die Herausforderungen der Softwareverteilung</title><link>https://javapro.svenruppert.com/die-herausforderungen-der-softwareverteilung/</link><pubDate>Tue, 16 Feb 2021 10:43:16 +0000</pubDate><guid>https://javapro.svenruppert.com/die-herausforderungen-der-softwareverteilung/</guid><description>&lt;p&gt;&lt;strong&gt;Die Softwareentwicklung hängt immer mehr von externen Abhängigkeiten (Dependencies) ab und die Häufigkeit der Deployments nimmt zu. Beide Trends zusammen sind schon eine Anforderung an die bestehenden Infrastrukturen. Ein weiteres Element, das die Bereitstellung von Software in einen Netzwerkengpass verwandelt, ist die Verwendung zusammengesetzter (compounded) Artefakte. Und der vierte Trend, der gegen uns arbeitet, ist die rapide ansteigende Anzahl von Geräten die als Konsumenten in Frage kommen. Alle diese Trends zusammen sind eine Herausforderung für die Infrastruktur. Aber was könnten wir dagegen tun?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>DevSecOps - 101</title><link>https://javapro.svenruppert.com/devsecops-101/</link><pubDate>Thu, 28 Jan 2021 17:20:00 +0000</pubDate><guid>https://javapro.svenruppert.com/devsecops-101/</guid><description>&lt;p&gt;Ich musste über ein Thema nachdenken, das mich Kunden oder Teilnehmer von Konferenzen seit längerer Zeit wiederholt fragen. Die Frage ist fast immer:&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;Was sind die “&lt;strong&gt;&lt;strong&gt;quick wins&lt;/strong&gt;&lt;/strong&gt;” oder “&lt;strong&gt;&lt;strong&gt;low hanging fruits&lt;/strong&gt;&lt;/strong&gt;”, wenn Sie sich mehr mit dem Thema Sicherheit in der Softwareentwicklung befassen möchten?&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;Und genau diese Frage möchte ich jetzt aus meiner Sicht heraus beantworten und beginnen mit einem Ausdruck, der in der Geschäftswelt häufig verwendet wird.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;Diesen Artikel gibt es auch als Youtube Video auf meinem Kanal und ist zu finden unter&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>