URL‑Shortener Adventskalender 2025

Sven Ruppert

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.

Motivation: Warum ein eigener URL-Shortener?

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: https://github.com/svenruppert/url-shortener

Kommerzielle URL-Shortener sind praktisch – aber oft intransparent. Sie sammeln Nutzungsdaten, bieten proprietäre APIs oder sperren essenzielle Funktionen hinter Bezahlmodellen. Das Ziel dieses Projekts ist daher ein vollständig selbstbetriebener, übersichtlicher und sicherer Shortener, der sich für interne Netzwerke, Entwicklerteams, Firmen und Hobbyprojekte gleichermaßen eignet.

Dabei verfolgt das Projekt drei zentrale Grundprinzipien: Transparenz, indem jede Entscheidung im Code nachvollziehbar dokumentiert ist; Didaktik, da das Projekt nicht nur ein Tool, sondern vor allem eine Lernplattform sein soll; und Erweiterbarkeit, weil jedes Feature modular konzipiert wurde und sich dadurch problemlos anpassen oder erweitern lässt.

Was erwartet Benutzer im Adventskalender?

Die technische Reise durch den Advent wird sowohl inhaltlich als auch direkt im Repository sichtbar. Jeder Tag ist als eigener Git‑Branch angelegt, beginnend mit feature/advent-2025-day-01 und fortgeführt bis zum finalen Weihnachtstürchen. Damit lässt sich die Entwicklung des Projekts in kleinen, klar abgegrenzten Schritten nachvollziehen – inklusive aller Refactorings, architektonischen Anpassungen und neuen Funktionen. In derselben Struktur präsentiert der Adventskalender jeden Tag ein präzise umrissenes Feature, das anhand des zugehörigen Patches oder PRs nachvollzogen wird. Ergänzende Codeausschnitte aus Core-‑ und UI-Modul, architektonische Erläuterungen sowie Hinweise auf typische Anti-Patterns vertiefen das Verständnis. Abgerundet wird jedes Türchen durch passende Visualisierungen und eine kompakte Zusammenfassung, sodass die Entwicklung des Projekts Schritt für Schritt transparent und greifbar wird.

Begründung der Technologiewahl

Für den URL‑Shortener wurden bewusst Technologien gewählt, die sowohl praxisnah als auch didaktisch wertvoll sind. Jede Entscheidung unterstützt das Ziel des Projekts: ein modern aufgebautes, aber leicht nachvollziehbares System zu schaffen, das ohne unnötige Abhängigkeiten auskommt.

Core Java (Java 24)

Die Basis des Projekts ist reines Core Java. Die Gründe dafür sind:

Die Verwendung von reinem Core Java ermöglicht maximale Transparenz: Ohne jegliche Framework Magie sehen Benutzer exakt, wie Datenmodelle, Handler, Fehlerbehandlung oder Serialisierung aufgebaut sind. Durch den bewussten Verzicht auf zusätzliche Bibliotheken wird nicht nur die Angriffsfläche reduziert, sondern auch das Risiko von Supply-Chain-Problemen minimiert. Gleichzeitig führt dieser Ansatz Entwicklern sehr klar vor Augen, wie leistungsfähig und umfangreich das JDK heute bereits ist: Viele Aufgaben, für die man früher externe Abhängigkeiten benötigte, lassen sich inzwischen problemlos mit Bordmitteln lösen.

Jetty als eingebetteter Webserver

Eine bewusste Alternative zu Spring Boot oder Jakarta EE:
Jetty zeichnet sich dadurch aus, dass es leichtgewichtig ist und sehr schnell startet, was besonders in Entwicklungsszenarien von Vorteil ist. Gleichzeitig bietet Jetty eine vollständige Kontrolle über Routing und Servlets, sodass sich http-Mechaniken präzise demonstrieren und gezielt implementieren lassen. Dank seiner modularen Struktur eignet sich Jetty hervorragend für kleine, klar umrissene Microservices und bleibt dabei eine stabile, bewährte Technologie, deren lange Produktionshistorie für hohe Zuverlässigkeit spricht.

Jetty bietet genau die richtige Balance zwischen Einfachheit und technischer Relevanz für dieses Open-Source-Projekt.

Vaadin Flow für das UI

Das Projekt nutzt Vaadin Flow, um eine vollständig serverseitige, Java-fokussierte UI umzusetzen, die ohne zusätzlichen JavaScript-‑ oder TypeScript-Stack auskommt und sich dadurch besonders für Entwickler eignet, die sich vollständig auf Java konzentrieren möchten. Statt auf ein komplexes Frontend-Ökosystem zu setzen, ermöglicht Vaadin eine durchgängige Entwicklung in einer Sprache, wodurch sich die kognitive Last deutlich reduziert und die Lernkurve flacher wird. Die komponentenbasierte Architektur ermöglicht eine produktive und strukturierte Arbeitsweise, bei der Benutzeroberflächen klar modelliert und wiederverwendbar aufgebaut werden können. Gleichzeitig sorgt das serverseitige Rendering dafür, dass keine direkten REST-Aufrufe vom Browser aus notwendig sind, was das Sicherheitsniveau erhöht und Angriffsflächen reduziert. Trotz dieser technischen Einfachheit bietet Vaadin ein modernes Styling und eine Benutzererfahrung, die an die Professionalität von Enterprise-Anwendungen erinnert. Dadurch eignet sich das Framework hervorragend für interne Tools, administrative Oberflächen und Firmenprojekte, bei denen Sicherheit, Robustheit und langfristige Wartbarkeit im Vordergrund stehen.

EclipseStore als Persistenzlösung

EclipseStore ersetzt klassische Datenbanken durch einen objektorientierten Persistenzansatz, der bewusst ohne ORM-Schichten, Entities, Tabellenmodelle oder komplexe Abstraktionen auskommt. Statt Daten in eine relationale Struktur überführen zu müssen, bleiben sie in ihrer natürlichen Form bestehen: Java-Records, Listen und andere Objektstrukturen werden direkt persistiert. Dadurch entfällt die sonst übliche Mapping-Logik, was die Komplexität des Persistenzlayers deutlich reduziert und die Architektur klarer und nachvollziehbarer macht.

Besonders in kleinen, fokussierten Services zeigt sich EclipseStore in seiner Stärke. Die Persistenz fügt sich nahtlos in das Domain-Modell ein, ohne Entwickler dazu zu zwingen, ihre Datenstrukturen an eine relationale Denkweise anzupassen. Dieser direkte Ansatz führt nicht nur zu einer eleganteren Modellierung, sondern auch zu sehr guter Performance. Da EclipseStore In-Memory-konforme Objektgraphen verwaltet, ist der Datenzugriff äußerst schnell und erfordert keine zusätzlichen Caching-Mechanismen oder komplexen Optimierungen. Das Ergebnis ist ein leichtgewichtiges, aber leistungsstarkes Persistenzsystem, das ideal für die Anforderungen eines modernen, kompakten Java-Services ist.

Didaktisch bietet EclipseStore einen wertvollen Blick darauf, wie persistente Datenmodelle funktionieren können, wenn sie nicht an die Einschränkungen relationaler Datenbanken gebunden sind. Entwickler gewinnen ein tieferes Verständnis dafür, wie Objektlebenszyklen, Datenflüsse und Modellierungsentscheidungen in einer Umgebung aussehen, die vollständig aus der Java-Welt heraus konzipiert sind. Dadurch eignet sich EclipseStore besonders gut für diesen URL-Shortener.

Hinweis auf bereits veröffentlichte Artikel

Bevor wir in den Adventskalender einsteigen, lohnt sich ein Blick auf die bisherigen Veröffentlichungen, die bereits die Grundlagen, die Architektur und die ersten UI-Konzepte des Projekts vorstellen. Diese Artikel bilden das Fundament, auf dem der Adventskalender inhaltlich aufbaut:

  • Teil I – Kurze Links, klare Architektur: Eine ausführliche Einführung in die Motivation, die Architektur und das Datenmodell des Projekts. Der Artikel zeigt, wie man einen URL-Shortener vollständig in Core Java entwickelt und welche Designprinzipien dahinterstehen. (https://javapro.io/de/kurze-links-klare-architektur-ein-url-shortener-in-core-java/)
  • Teil II – Vertiefung der Serverkomponenten: Dieser Artikel beleuchtet die REST-Handler, Validierung, Sicherheitsüberlegungen und das Zusammenspiel zwischen Core-Modul und Server-Schicht. (https://javapro.io/de/teil-ii-url-shortener/)
  • Teil III – Die Web-UI mit Vaadin Flow: Hier wird gezeigt, wie die Benutzeroberfläche aufgebaut ist, wie Listen, Formulare, Dialoge und Validierungen funktionieren und wie Vaadin Flow ohne zusätzlichen JavaScript-Stack ein modernes UI ermöglicht. (https://javapro.io/de/web-ui-fuer-den-url-shortener/)

Diese Artikel bieten einen ersten technischen Einstieg und eignen sich perfekt als Vorbereitung auf die einzelnen Türchen des Adventskalenders.

Warum als Adventskalender?

Ein Projekt wie ein URL-Shortener entsteht nicht an einem Wochenende – es besteht aus vielen kleinen Schritten, Refactorings, Entscheidungen und Verbesserungen. Ein Adventskalender bietet dafür das perfekte Format: kurze, tägliche, verständliche Häppchen, die sich zu einem Gesamtverständnis zusammenfügen. Es ist gleichzeitig ein Rückblick auf die Reise des Projekts und ein motivierender Einstieg in das neue Jahr: Ein Projekt, das Benutzer selbst betreiben, erweitern, verändern oder komplett neu denken können.

Total
0
Shares
Previous Post

Code. Collaboration. Community.

Next Post

Adventskalender – 2025 – Filter & Search – Teil 01

Related Posts