Blog & Artikel

Blog-Post

Type-safe HTTP routing in Java and Rust

In recent years, the trend in our pop-culture industry has been to favour static and strong typing as well as build-time checks over dynamic typing and techniques like late binding. Where possible, you are expected to use the compiler for correctness checks instead of unit tests. Even though the Java language is statically typed, its type system is often considered to be not very helpful. Web applications written in Java are traditionally bristling with weakly typed APIs, heavy use of reflection, and lots of annotations that are interpreted at runtime. Let’s see how far the trend towards build-time checks has been adopted in the Java ecosystem when it comes to writing web applications, how it compares to what’s done in the Rust community, and what benefits and weak points these techniques have.

Artikel

Was ist eigentlich htmx?

Nicht nur, aber vor allem im JVM-Umfeld stößt man in letzter Zeit immer wieder auf die Bibliothek htmx. Das Versprechen von htmx ist dabei nichts Geringeres, als das fehlende Puzzlestück von HTML zu sein. Deswegen wollen wir uns hier diese Bibliothek im Detail anschauen. Schließlich sollten wir in der Lage sein zu beurteilen, ob es uns in unseren Projekten hilft oder ob wir doch nach etwas anderem suchen sollten.

Artikel

API gut, alles gut

Schnittstellen für unabhängige Systeme

Blog-Post

Bestehende Rich Clients erneuern

Oft gibt es Rich-Clients die als Backoffice-Applikation wichtige Funktionen erfüllen und nun Probleme machen: egal ob es um Support für mobile Geräte oder um einfaches Arbeiten von zu Hause geht oder auch nur um das Sicherstellen der Weiterentwicklung – Rich-Clients kommen mit Ihren eigenen Problemen. Ob die richtige Antwort für die Modernisierung solcher Applikationen immer die Migration zu einer Webapplikation ist, wollen wir in diesem Artikel beleuchten.

Blog-Post

Communicating organizational changes with “Team Topologies”

Whenever the need arises to set up a new team, split a team into two or move responsibilities between teams it is necessary to have a good idea of where you are and where you want to be after the change. Additionally to the current and final states you will very likely have phases with intermediate states. To help everyone involved to have a shared understanding of which phases you will transition through - and when responsibilities and communication channels have to be created or changed - a visual representation of these states can be used to paint a (literal) common picture.

Artikel

Wie gemacht für Legacy-Code

Artikel

Identifikation von Team-Grenzen

Im Umfeld zahlreicher Initiativen und Ideen wie zum Beispiel Microservices, Agile, Domain-driven Design oder Team Topologies geht es um die Etablierung von autonomen, cross-funktional aufgestellten Teams, die einen schnellen Arbeitsfluss aufweisen und agil auf Veränderungen reagieren können. Die Herausforderung besteht allerdings darin, passende Grenzen für die Zuständigkeitsbereiche dieser Teams zu finden. Darum dreht sich dieser Artikel.

Artikel

Compliance in hybriden Betriebsumgebungen

Compliance ist ein wesentlicher Bestandteil der Unternehmensführung und trägt dazu bei, die Rechtskonformität und Qualität entwickelter Software sicherzustellen. Es ist auch ein unvermeidbares Kriterium bei der Modernisierung einer Systemlandschaft, die häufig mit der Migration in die Cloud einhergeht.

Blog-Post

Extending the OpenTelemetry Java Agent for Spring Auto-Instrumentation

Artikel

Zukünftige Features des JDK

Ich weiß nicht, wie es Ihnen geht, aber seitdem mit JDK 9 der Release-Zyklus des JDK auf sechs Monate verkürzt wurde und wir mittlerweile, dank Preview und Incubator, auch Features bereits vor der vollständigen Fertigstellung ausprobieren können, wirkt das JDK lebendiger als eh und je. In diesem Artikel wollen wir deswegen einen Blick in die Zukunft werfen und uns aktuelle Preview-Features anschauen, die es vermutlich in naher Zukunft final ins JDK schaffen werden.

Blog-Post

Entwickeln mit ChatGPT

In der Welt der Softwareentwicklung ist das Wissen darüber, wo man Informationen findet, oft wertvoller als alles auswendig zu wissen. Doch was, wenn ein Werkzeug nicht nur Informationen liefert, sondern auch lernt, Probleme zu lösen und beim Entwickeln zu assistieren? In diesem Blog Post berichte ich aus meinem Alltag als Entwicklerin und wie mich ChatGPT bei beruflichen Aufgaben unterstützt - sei es bei der Einarbeitung in neue Programmiersprachen, dem Schreiben von Skripten oder dem Umsetzen von kreativen Ideen.

Artikel

Der Evolutionist

Softwarearchitekturarbeit an bestehenden Systemen

Blog-Post

Rate Limiting with Spring Boot, Bucket4j, and Redis

Let’s implement rate-limiting protection for multiple Spring Boot server instances using bucket4j and redis to have the solution on application level.

Blog-Post

Rate Limiting with Spring Boot

Let’s implement rate-limiting protection for your Spring Boot server without the need for any additional dependencies beyond those included in the Spring Boot Starter package.

Blog-Post

Lokale LLMs mit Ollama und Spring AI nutzen

Ein Lama im Frühling

Blog-Post

Compacted State Feeds

Event notification vs. Event-carried State Transfer vs. Delta loads. How to design good event architectures for mutable data?

Artikel

Es lebe die Bürokratie!

Die Digitalisierung hilft, Bürokratie zu reduzieren, glaubt man. Warum das so einfach nicht ist, erklärt diese Kolumne.

Artikel

GitOps geht auch ohne Kubernetes

Artikel

Kombinierbare Elemente für Benutzungsoberflächen im Web

Die Art und Weise, wie wir Benutzungsoberflächen im Web entwickeln, hat sich über die letzten Jahre stark verändert. In dieser Kolumne wollen wir uns deswegen ansehen, wie ein moderner Ansatz aussieht und vor welche Herausforderungen dieser, vor allem für klassische Templateengines der Java-Welt, uns stellt.

Blog-Post

Was treibt dich an?

In der heutigen schnelllebigen Welt der Softwareentwicklung ist die Modernisierung von Software eine unerlässliche Aufgabe, um mit ständig ändernden Anforderungen und Technologien Schritt zu halten. Es gibt immens viele Ansätze zur Modernisierung von Software. Aber es ist eine Herausforderung, die richtigen Werkzeugkästen in den richtigen Situationen zu finden. Wie schön wäre es, die eine «Ultimative Softwaremodernisierungsmethode™️» in den Händen zu halten, die all die Probleme mit den in die Jahre gekommenen Softwaresysteme lösen kann?

Artikel

Automatisierte Code-Wartung mit OpenRewrite

Teil 2

Artikel

Abhängigkeitsupdates mit Renovate automatisieren

Egal ob wir an einer Anwendung oder Bibliothek arbeiten, wir haben es immer mit Abhängigkeiten zu tun. Wir sind abhängig von der Version unserer Programmiersprache, von externen oder internen Bibliotheken und von Werkzeugen. Neben der eigentlichen Verwaltung müssen diese auch regelmäßig aktualisiert werden. Das erfordert, neben dem Update selbst, auch, dass wir mitbekommen müssen, wenn es eine neue Version gibt. In diesem Artikel schauen wir uns deswegen eine Bot-basierte Lösung an, die uns genau hierbei unterstützen kann.

Blog-Post

Rooting Out Issues: JPA and Lombok Combination Problems Demystified

Ever encountered perplexing issues with JPA and Lombok’s @Data annotation when handling entities in Java? This blog post explores unexpected behaviors, especially with auto-generated IDs, in conjunction with equals and hashCode methods. Learn about identity and uncover how you can resolve these challenges forever.

Artikel

Technologien zur Integration von Services

Kleine Architekturstudie

Blog-Post

Die Anatomie eines erfolgreichen Teams

Die Gründe für das Scheitern von Softwareentwicklungsprojekten sind vielfältig und zum Großteil nicht technischer, sondern organisatorischer Art: Zu hohe Komplexität, unklare Anforderungen, nicht-funktionale Teams, Fokus auf den falschen Dingen oder überhandnehmende Konzernpolitik. Bereits zum Projektstart können Maßnahmen getroffen werden, um einige dieser Risiken einzudämmen und die Aussicht auf einen Projekterfolg zu erhöhen. Dieser Artikel wird den Fokus auf ein funktionierendes, erfolgreiches Entwicklungsteam legen und erörtern, welche Stellschrauben Sie drehen können – und von welchen Sie lieber die Finger lassen sollten.