Agentic Programming Principles

Explicit Native Systems

© C. Aberger (2026)

Agentische Programmierung funktioniert am besten, wenn lesbare Software sowohl Menschen als auch LLMs hilft, ein System zu verstehen, zu ändern, zu verifizieren und zu übergeben. Moderne Browser und modernes Java bieten bereits starke native Primitive. Wir setzen sie direkt ein.

Kernthese

Frameworks haben viele Probleme gelöst, aber auch verstecktes Verhalten, Konventionsschichten und Abstraktionstiefe eingeführt. Für viele Anwendungen bieten moderne Plattformen bereits genug native Fähigkeiten.

Expliziter Kontrollfluss

Requests, Zustandsänderungen und Rendering-Pfade bleiben sichtbar.
Wir können Verhalten nachvollziehen, ohne mehrere versteckte Framework-Schichten zu durchqueren.

Eine einzige Quelle der Wahrheit

Zustand und Verträge liegen an einer klaren Stelle.
Das reduziert Drift und macht reaktive Updates leichter nachvollziehbar.

Nativ vor Framework

Wir bevorzugen, was die Plattform bereits gut kann.
Das eigentliche System bleibt in unseren eigenen Quelldateien sichtbar.
Frontend

Native Browser-Komponenten

Der Browser bietet bereits ein natives Komponentenmodell. Custom Elements, Shadow DOM, JavaScript-Module und verwandte native Werkzeuge wie Template Literals und HTML-Templates geben uns wiederverwendbare UI-Bausteine, ohne eine große Framework-Runtime hinzuzufügen.

  • Custom Elements bieten wiederverwendbare UI-Einheiten über die eingebaute window.customElements-Registry des Browsers.
  • Shadow DOM bietet native Kapselung für DOM und CSS.
  • JavaScript-Module machen Abhängigkeiten durch Imports und Exports explizit.
  • Template Literals und das HTML-<template>-Element unterstützen direkte und lesbare View-Konstruktion.
  • Typsicheres JavaScript mit JSDoc gibt einfachen .js-Dateien klarere API-Verträge und leichte Typprüfung.
  • Eine einzige Quelle der Wahrheit hält den Zustand zentral und vermeidet verstreuten UI-Drift.
  • Reaktive Programmierung über Subscriptions, Zustandsänderungen und JavaScript Proxy hält das Rendering am Modell ausgerichtet.
Backend

Native Java-Systeme

Die Java-Plattform bietet bereits eine starke Basis für Webanwendungen. Für diese Art von Projekt liefern der JDK HttpServer, einfaches JDBC und Virtual Threads bereits eine starke native Grundlage. Wenn ausgehende HTTP-Aufrufe nötig sind, steht java.net.http.HttpClient als native Plattform-Option bereit.

  • JDK HttpServer hält HTTP-Einstiegspunkte lokal und sichtbar.
  • java.net.http.HttpClient ist ein moderner nativer HTTP-Client, der ohne weitere Framework-Runtime verfügbar ist.
  • Manuelles Routing macht URL-Behandlung und Request-Fluss im Projektcode explizit.
  • Einfaches JDBC hält den Datenbankzugriff nahe am tatsächlichen SQL und Schema.
  • Virtual Threads werden von der Java-Runtime selbst verwaltet.
  • Structured Concurrency ist die bevorzugte native Wahl, wenn koordinierte nebenläufige Arbeit nötig ist.
LLM-Entwicklung

Warum das gut mit LLM-gestützter Entwicklung funktioniert

Mehr echter Code passt in den Kontext

Wichtige Logik lebt in lokalen Quelldateien.
Die Implementierung ist nicht hinter Framework-Lebenszyklen und generierten Schichten versteckt.

Abhängigkeiten sind sichtbar

Der Systemgraph ist leichter zu inspizieren.
JavaScript-Module, manuelles Routing und direkte Konfiguration zeigen, wovon das System abhängt.

Patches bleiben lokal

Änderungen berühren weniger Dateien mit klareren Seiteneffekten.
Explizite Architektur macht kleine, überprüfbare Edits wahrscheinlicher.

Debugging ist einfacher

Fehler lassen sich meist durch den Projektcode verfolgen.
Es liegen weniger framework-spezifische Abstraktionsschichten zwischen Ursache und Wirkung.
Kompromisse

Was wir dafür in Kauf nehmen

  • Wir schreiben mehr Infrastruktur selbst.
  • Wir verlassen uns weniger auf „batteries included"-Ökosysteme.
  • Wir brauchen Disziplin bei Ordnerstruktur, Zustandsdesign und Code-Organisation.
  • Das Starter-Template nimmt einen Großteil dieser einmaligen Einrichtungskosten ab, damit künftige Projekte trotzdem schnell vorankommen.
Empfohlene Lektüre

Kleine Leseliste

  1. HttpServer API
  2. HttpClient API
  3. JEP 444: Virtual Threads
  4. JEP 525: Structured Concurrency
  5. OpenJDK Project Loom
  6. Networking I/O with Virtual Threads - Under the hood
  7. MDN: Using custom elements
  8. MDN: Using shadow DOM
  9. MDN: JavaScript modules
  10. MDN: Template literals
  11. MDN: Using templates and slots
  12. MDN: Proxy
  13. MDN: CSSStyleSheet
  14. @use JSDoc
Vollständige Referenzen

Browser- und Java-Plattform-Referenzen, die im Artikel verwendet werden.