Skip to content
Zum Inhalt springen
#vibe-coding#java#github-copilot#spring-boot#spring-ai#vaadin#live-coding#prompt-engineering

Live Vibe Coding Battle: Eine Java-App mit GitHub Copilot bauen

mit Catherine Edelveis

Zwei vordefinierte Prompts, eine gemeinsame Java-App und strikte CI-Gates: Die One-Shot-Variante startete, scheiterte aber beim Abrufen der Ergebnisse, während der Split-Prompt-Workflow die stabilere App und die besseren Qualitätsmetriken lieferte.

Veröffentlicht: 5. März 2026Lesezeit: 5 Min. Lesezeit
Live Vibe Coding Battle: Eine Java-App mit GitHub Copilot bauen

YouTube

Live Vibe Coding Battle: Eine Java-App mit GitHub Copilot bauen

YouTube-Video laden

Dieses Video wird von YouTube eingebettet und erst nach Ihrer Einwilligung geladen. Beim Laden können personenbezogene Daten an YouTube oder Google übermittelt und Cookies gesetzt werden.

Auf YouTube öffnen

Mehr dazu in der Datenschutzerklärung.

Projektquelle

Arbeits-Repository

Hier findest du Prompts, Instructions und Beispiele aus dem gezeigten Modernisierungs-Workflow.

Repository öffnen
Timestamps der Session

Dieser Stream war ein simples, aber nützliches Experiment: Catherine nutzte den vordefinierten Master Prompt in einem Schritt, ich nutzte den vordefinierten Split Prompt in sechs kleineren Schritten, und am Ende verglichen wir die Ergebnisse gegen dieselben CI-Gates. Die App selbst war ein kleiner Healthcare Assistant für Symptom-Analyse, KI-generierte Ratschläge und die Suche nach passenden Spezialisten.

Catherine Edelveis

Co-Speaker

Catherine Edelveis

DevRel bei BellSoft

Catherine war Teil dieser Live Coding Battle, um Prompting-Strategien unter strikten CI-Qualitäts-Gates in einem realen Java-App-Workflow zu vergleichen.

Setup des Battles

Das Repository brachte bereits eine strikte Evaluierungspipeline mit, deshalb ging es nie darum, möglichst schnell Code zu erzeugen. Es ging darum, Code zu erzeugen, der unter Druck standhält.

Quality-Gates im Stream:

  • Apache Maven PMD Plugin, um Stilprobleme, Duplikate und typische Maintainability-Probleme zu finden.
  • SpotBugs Maven Plugin, um mögliche Defekte wie Null-Handling-Probleme, falsche API-Nutzung und riskante Implementierungsmuster aufzudecken.
  • JaCoCo Maven Plugin, um Testabdeckung zu messen und sichtbar zu machen, wie viel des generierten Codes tatsächlich ausgeführt wurde.
  • Trivy, um das Projekt auf bekannte Schwachstellen in Abhängigkeiten und Build-Artefakten zu scannen.
  • OWASP ZAP Baseline Scan, um einen leichten dynamischen Sicherheitscheck gegen die laufende Anwendung auszuführen.

Genau dieses Setup machte die Session nützlich, weil Copilot-Output an objektiven Checks gemessen wurde und nicht am ersten Eindruck.

Ergebnisse aus dem Livestream

GitHub-Action-Ergebnisse von One-Shot Prompt und Split Prompt.

Tool / MetrikOne-ShotSplit Prompt
JaCoCo Coverage11%32%
PMD-Verstöße10
SpotBugs Gesamtfehler2617
Trivy Schwachstellen33
ZAP Medium22
ZAP Low66

Das Hauptergebnis war klar:

  • der One-Shot Master Prompt erzeugte eine laufende Anwendung, aber das Abrufen der Ergebnisse scheiterte an internen Fehlern
  • der Split-Prompt-Ansatz erzeugte eine laufende Anwendung
  • statische Analyse und testbezogene Ergebnisse fielen klar zugunsten der Split Prompts aus

Wichtiger Kontext: Das war kein Fehler von Catherine. Das eigentliche Problem war die Komplexität des Prompts. Der Master Prompt wollte in einem Schritt zu viel erledigen, was Debugging und Korrekturen schwerer machte.

Kurzer Vergleich: Master Prompt vs Split Prompt

Hier ist der praktische Unterschied zwischen den beiden Ansätzen, die wir genutzt haben.

DimensionMaster Prompt (One-Shot)Split Prompts (6 Schritte)
Scope pro GenerierungGanze App in einem Durchgang (DB, OpenAI-Services, REST-API, Vaadin-UI, Tests, JMeter, Docker)Eine Schicht nach der anderen (Domain, AI-Services, API, UI, Tests, Performance/Docker)
Feedback-LoopSpät und breit: Fehler erscheinen erst nach vielen gekoppelten ÄnderungenFrüh und lokal: Jeder Schritt kann gebaut und geprüft werden, bevor es weitergeht
Debugging-AufwandHoch, weil Ursachen über mehrere Schichten verteilt sindNiedriger, weil Regressionen auf den aktuellen Schritt begrenzt sind
Architektonische KontrolleSchwächer: mehr Raum für unbeabsichtigte Kopplung zwischen SchichtenStärker: klarere Grenzen und schrittweise Integration
Session-ErgebnisApp startete, aber das Abrufen zentraler Ergebnisse scheiterte an internen FehlernEine laufende App mit funktionierendem Ergebnisfluss und besseren Qualitätsmetriken

Die Kurzfassung: Der Master Prompt optimierte auf Vollständigkeit in einem Durchgang, die Split Prompts auf inkrementelle Korrektheit.

UI-Ergebnis (unerwartet)

Ein überraschender Teil des Streams war die UI-Qualität: Beide generierten Anwendungen sahen rau aus, obwohl wir Vaadin genutzt haben und Vaadin normalerweise solide Default-Stylings mitbringt. Wir konnten während der Session nicht vollständig erklären, warum beide UIs so schlecht aussahen.

UI-Ergebnis aus der Live Vibe Coding Battle

Was tatsächlich besser funktioniert hat

Der Split-Prompt-Workflow veränderte zwei Dinge, die am meisten zählten:

  • jeder Schritt ließ sich sofort validieren
  • wir konnten nachvollziehen und reviewen, was das Modell geändert hatte, bevor wir weitergingen

Das gab mehr architektonische Kontrolle und machte es leichter, Copilot zu korrigieren, wenn selbstbewusst falscher Output entstand.

Genau deshalb ließ sich der Split-Ansatz leichter steuern und leichter vertrauen.

Warum die Qualitäts-Gates wichtig waren

Ohne automatisierte Checks hätte dieser Stream eine Weile so wirken können, als seien beide Ansätze irgendwie "okay".

Die CI-Gates machten die Unterschiede sichtbar:

  • Codequalitätsprobleme wurden schnell von PMD und SpotBugs sichtbar gemacht
  • Sicherheits- und Analyse-Checks verhinderten stille Regressionen mit Trivy und OWASP ZAP Baseline
  • wir konnten Prompting-Stile über messbares Feedback vergleichen

Genau hier wird Vibe Coding real: Wenn der Code deine Guardrails nicht besteht, ist er nicht fertig.

Praktische Takeaways

  • vermeide übergroße One-Shot-Prompts für mehrschichtige Java-Apps
  • zerlege die Arbeit in kleinere Prompts mit klaren Akzeptanzkriterien
  • führe statische Analyse und Tests nach jedem sinnvollen Schritt aus
  • behandle KI-Output als Entwurf, der reviewt werden muss, nicht als Wahrheit
  • optimiere im Entwicklungsprozess für Erklärbarkeit, nicht nur für Geschwindigkeit

Abschließender Gedanke

Diese Session war eine gute Erinnerung daran, dass besseres Prompting nicht bedeutet, einfach einen längeren Prompt zu schreiben. Es geht darum, einen Workflow aufzubauen, in dem jeder Schritt klein genug ist, um validiert zu werden.

Der One-Shot Master Prompt brachte die App zwar zum Starten, scheiterte aber weiterhin beim internen Abrufen der Ergebnisse. Die Split-Prompt-Strategie lieferte den stabileren End-to-End-Flow und die besseren Qualitätssignale. Für produktionsorientierte Java-Teams ist das die stärkere Standardeinstellung.

Kommentare

Kommentare optional von GitHub laden

Die Kommentarfunktion wird über Giscus und GitHub Discussions bereitgestellt. Sie wird erst nach Ihrer ausdrücklichen Einwilligung geladen. Beim Laden können personenbezogene Daten wie Ihre IP-Adresse und technische Metadaten an GitHub übermittelt sowie Cookies oder ähnliche Technologien gesetzt werden.

Bitte bestätigen Sie zuerst Ihre Einwilligung, bevor die Kommentare geladen werden.

Mehr dazu in der Datenschutzerklärung.