Posts

Die ehrlichste Zeile Code

Im Juni 2025 haben die Go-Maintainer eine Entscheidung getroffen, die auf den ersten Blick wie Aufgeben aussieht - und auf den zweiten wie Reife. Seit Jahren stört sich die halbe Go-Community an einer Sache: der Fehlerbehandlung. Nach fast jedem Funktionsaufruf dieselbe Geste: `if err != nil { return err }`. Drei Anläufe in sieben Jahren sollten das beheben: erst das check/handle-Modell aus dem Go-2-Entwurf, dann die try()-Funktion, zuletzt ein „?"-Operator nach Rust-Vorbild. Keiner hat es in die Sprache geschafft. Im Juni 2025 zogen die Maintainer einen Schlussstrich: keine neue Syntax für Fehlerbehandlung, die offenen Proposals werden geschlossen. Die drei Zeilen bleiben. Der elegante Gegenentwurf Java löst dasselbe Problem scheinbar schöner. Eine Methode wirft eine Exception, irgendwo weiter oben fängt sie jemand. Dazwischen muss niemand etwas tun. Checked Exceptions sollten genau das erzwingen: der Compiler verlangt, dass man sich kümmert. In der Praxis endet das oft in ein...

Legacy ist eine Entscheidung, keine Altlast

Diese Woche gab es bei uns eine Diskussion, die in keinem Feature-Plan steht und trotzdem über Jahre nachwirkt: Wie gehen wir mit dem Support für die ältere Generation eines Produkts um, wenn die neue längst im Einsatz ist. Keine Frage, die man auf einer Folie schön darstellen kann. Aber eine, die jeden Betrieb früher oder später einholt. Legacy ist kein Zustand, sondern eine Entscheidung Der Begriff Legacy klingt nach Staub und Stillstand. Tatsächlich ist Legacy meist das, was zuverlässig läuft und Geld verdient. Das Problem ist nicht der alte Code an sich, sondern die fehlende Entscheidung, wie lange und wie gut man ihn noch trägt. Gartner beziffert das: Wer technische Schulden ignoriert, gibt bis zu 40% mehr für Wartung aus. Premium-Support für End-of-Life-Systeme kostet schnell das Doppelte bis Dreifache des regulären Supports. Wer nichts entscheidet, entscheidet sich für die teuerste Variante. Die alte Generation ist ein Vertrauenstest In der Enterprise-Welt laufen Anwendungen...

PaaS-Komfort, Hyperscaler-Risiko: Was der Railway-Outage gestern Nacht gezeigt hat

Acht Stunden Outage gestern Nacht. Mein Go-Stack auf Railway war nicht erreichbar - das Frontend lief, das Backend war tot. Ursache: Google Cloud hat Railways Produktions-Account fälschlich in einen Suspend-Status verschoben. Automatisierte Aktion, keine Vorwarnung, und eine Reihe weiterer Kunden traf es im selben Schwung mit. Was PaaS verspricht - und was nicht Railway, Render, Fly.io und Konsorten verkaufen Developer Experience. Push-to-deploy, automatische Build-Pipelines, fertige Datenbanken. Das ist real und gut. Was sie nicht abstrahieren: die Infrastruktur unter der Plattform. Railway läuft auf GCP. Wenn dort ein Compliance-Filter falsch konfiguriert ist, geht Railway offline. Ohne Vorwarnung, ohne Eskalationspfad für den einzelnen Kunden. Die Lieferketten-Frage Vor fünf Jahren war „auf welchem Cloud-Provider seid ihr" eine sinnvolle Frage. Heute braucht es zwei: Auf welchem Provider seid ihr direkt - und auf welchem Provider sitzt eure PaaS? Bei vielen Java-Stacks ist ...

Drei Rennen. Dann Regeländerung. Was die Formel 1 gerade richtig macht.

 Das neue Formel-1-Reglement 2026 war jahrelang vorbereitet. Neue Antriebsarchitektur, 50/50-Hybrid, komplett überarbeitete Aerodynamik. Alle wussten, dass es ein großer Schritt wird. Niemand wusste genau, wie er sich anfühlt. Drei Rennen später weiß man es. Was schief gelaufen ist Das Problem heißt Energiemanagement. Die neuen Hybridantriebe rekuperieren so aggressiv, dass auf manchen Streckenabschnitten faktisch niemand überholt — weil alle Fahrer gleichzeitig auf Rekuperation schalten. Fernando Alonso nannte diese Abschnitte „Rekuperationszonen". Max Verstappen war unzufrieden. Lando Norris auch. Das Grundproblem: Ein Reglement, das auf dem Papier elegant wirkt, produziert in der Realität unerwünschtes Gruppenverhalten. Zusätzlich gab es Sicherheitsbedenken. Der Crash von Oliver Bearman in Japan zeigte, dass große Geschwindigkeitsdifferenzen durch unterschiedliche Energiezustände der Fahrzeuge neue Risiken mit sich bringen. Was die FIA gemacht hat Reaktionszeit: drei Rennen. Da...

Kiro, Copilot & Co.: Was KI-IDEs für Java-Entwickler wirklich leisten

Java hat jetzt einen eigenen KI-Agenten-Stack. Und er ist sauber.

Google hat ADK for Java 1.0 veröffentlicht. ADK steht für Agent Development Kit — ein Framework für den Bau von KI-Agenten. Bisher war das überwiegend Python-Territorium. Jetzt ist Java offiziell dabei. Was bringt das konkret? Native Agent-to-Agent-Kommunikation. ADK implementiert das A2A-Protokoll. Java-Agenten kommunizieren direkt mit Agenten in Python, Go oder TypeScript. Das ist wichtig für heterogene Enterprise-Umgebungen — und die meisten größeren Shops sind heterogen. Human-in-the-Loop-Workflows. Wenn ein Agent eine kritische Aktion ausführen will, pausiert er und wartet auf Bestätigung. Kein nice-to-have — ein Grundbaustein für Compliance-relevante Prozesse. Enterprise-taugliches Session-Management. InMemorySessionService für lokale Entwicklung, VertexAiSessionService für Production, FirestoreSessionService für persistente State-Verwaltung. Das ist der Stack, den man in einem produktiven System braucht. Java und Go parallel. Wer Go-Microservices und Java-Backend gleichzeitig be...

KI im Code-Review: Hilfreich, aber kein Ersatz

 AI-Tools werden besser. Schneller. Sie finden Bugs, die ich übersehen hätte. Aber sie verstehen den Kontext nicht — warum dieser Code so ist, wie er ist. Wer das Warum nicht kennt, kann keinen guten Code-Review machen. Das bleibt menschliche Aufgabe. Für mich nach 25 Jahren Java: mehr denn je.