© isaxar/Shutterstock.com
Ratpack für asynchrone Architekturen

Asynchron trifft einfach


Java EE, Spring oder lieber Spring Boot? Die Frameworks wurden in unzähligen Projekten erfolgreich eingesetzt, und es gibt wohl kaum einen Java-Programmierer, der nicht zumindest mit einem dieser Frameworks in Berührung gekommen ist. Allerdings haben diese Frameworks im Laufe der Zeit eine gewisse Komplexität angehäuft, die nicht für jeden Anwendungsfall unbedingt notwendig ist.

Gerade die zunehmende Verbreitung von Microservices oder Self-contained Systems verlangt nach Frameworks, die sowohl genügsamer beim Ressourcenverbrauch (Speicher und CPU) als auch schlanker, was die zur Verfügung gestellten Funktionalitäten betrifft, sind. Eines dieser Frameworks ist Ratpack.

Das Besondere an Ratpack ist, dass ähnlich wie bei Node.js vollständig auf das asynchrone Programmiermodell gesetzt wird und die eingebauten Funktionalitäten auf das Wesentliche beschränkt sind. So wird man in Ratpack all das finden, was mit HTTP-Handling zu tun hat, doch einen ausgewachsenen ORM Mapper wird man vergeblich suchen. Allerdings lässt sich Ratpack einfach durch zusätzliche Module erweitern. So existieren Module für Hikari, um einen Connection-Pool zu integrieren, oder Module für Guice oder Spring, um einen ausgewachsenen DI-Container verwenden zu können.

Das klingt im ersten Moment nicht wirklich weltbewegend. Für sich allein genommen sind das noch keine Features, die Ratpack positiv aus der Masse der bereits etablierten Frameworks herausheben. Ratpack kann aber mehr. Es ist in der Lage, asynchrone Programmierung verstehbar und beherrschbar zu machen. Wieso beherrschbar? Asynchrone Programmierung ist doch nicht wirklich schwer? Die Praxis zeigt, dass das eben nicht der Fall ist. Insbesondere das Debugging von asynchronem Code bereitet häufig Schwierigkeiten und kostet viel Zeit. Die Gründe dafür sind vielfältig. Häufig ist es aber so, dass es ab einer gewissen Komplexität schwerfällt, ein vollständiges mentales Modell mehrerer asynchroner Prozesse im Kopf zu haben. Das ist in etwa so wie bei zu stark verschachtelten if-Anweisungen. Ab einer gewissen Tiefe wird auch das zunehmend unverständlich. Hier setzt Ratpack an, indem es für asynchrone Prozesse ein wohl definiertes Execution Model (Ausführungsmodell) beschreibt. Wohl definiert bedeutet in diesem Zusammenhang, eine reproduzierbare Ausführungsreihenfolge der einzelnen Bestandteile einer Ratpack-Applikation zu garantieren.

Das Execution Model

Ein sehr einfaches Ratpack-Programm, das aber schon alle wesentlichen Bestandteile e...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang