Java-Infrastruktur · Egothor

conflux

Eine bewusst kleine Java-Bibliothek für Situationen, in denen unabhängige Komponenten etwas typsicheren gemeinsamen Zustand teilen und auf Änderungen reagieren müssen — ohne daraus ein Dependency-Injection-Framework oder eine vollständige Anwendungsarchitektur zu machen.

Typedgemeinsame Keysein Kontextschlüsselname ist konsistent mit einem Java-Typ verbunden
Thread-safeKoordinationKontextspeicher und Listener-Strukturen sind für parallele Nutzung ausgelegt
WeakListenerschwache Listener-Referenzen vermeiden unbeabsichtigte Objektlebenszeiten
SmallAPI-OberflächeKoordinationsprimitive statt Ersatz-Anwendungsframework

Das kleine Problem, das oft zu einem großen Abhängigkeitsgraphen wird

Eine Komponente berechnet einen Wert. Mehrere unabhängige Komponenten benötigen den aktuellen Wert; einige müssen sofort auf Änderungen reagieren. Die naive Lösung verdrahtet direkte Referenzen überall, die „Enterprise“-Lösung importiert womöglich ein komplettes Framework. conflux besetzt bewusst den Raum dazwischen.

Producerschreibt einen typisierten Wert Shared Contexthält den aktuellen Zustand Change Eventbenachrichtigt Subscriber Consumerreagieren unabhängig

Ein typsicherer Kontext statt einer String-basierten Map

Der Kontext verwendet typisierte Keys, sodass der Vertrag sowohl den Namen als auch den erwarteten Java-Typ umfasst. Ein Schlüsselname kann nicht unbemerkt in einer Komponente Integer und in einer anderen String bedeuten. Das macht gemeinsamen Zustand leichter nachvollziehbar und verschiebt eine häufige Fehlerklasse näher an die Key-Deklaration.

Konzeptionelle APItypsicherer gemeinsamer Zustand
Key<Integer> COUNT = Key.of("count", Integer.class);

Ctx.INSTANCE.put(COUNT, 42);
int current = Ctx.INSTANCE.get(COUNT);

Ctx.INSTANCE.addListener(COUNT, value -> refreshView(value));

Gemeinsamer aktueller Zustand

Komponenten können den aktuellen Wert abrufen, ohne den Producer zu kennen oder dessen Referenz durch die Anwendung tragen zu müssen.

Änderungsbenachrichtigung

Listener können auf Updates reagieren, sodass ereignisbasierte Consumer den Kontext nicht kontinuierlich pollen müssen.

Weak Listener-Referenzen

Subscriptions sind so gestaltet, dass ein vergessenes Unsubscribe den Event Bus nicht automatisch zum Lebenszeit-Eigentümer jedes Listeners macht.

Parallele Nutzung

Concurrent Collections und Copy-on-Write-Listener-Verarbeitung halten die Primitive über Anwendungsthreads hinweg nutzbar.

Bewusst kein Anwendungsframework

conflux will weder Objekterzeugung, Konfiguration, Scheduling noch Business-Logik übernehmen. Der Wert liegt gerade in der engen Aufgabe: ein kleiner Vertrag, der zu einem bestehenden System hinzugefügt werden kann, wenn unabhängige Module einen gemeinsamen Treffpunkt benötigen.

Geeignet fürkleinen gemeinsamen Zustand · Komponentennachrichten · modulübergreifende KoordinationNicht daraus machenService Locator für jede Abhängigkeit · Persistenzschicht · verteilten Message Broker

Dieser enge Scope macht die Bibliothek auch als Infrastruktur in größeren Systemen geeignet: Sie löst eine Koordinationsaufgabe und überlässt Architekturentscheidungen der Anwendung.

Projektressourcen