Supersonic Subatomic Java

Quarkus – Kubernetes Native Java für die neue Generation der Softwareentwicklung

Dominik Mohilo

© Shutterstock / Ezume Images

Was, 23 Jahre ist Java schon alt?! Keine Frage, die Programmiersprache ist ein Dauerbrenner und wird uns sicher auch die nächsten Jahrzehnte begleiten. Dennoch kann Innovation ja nicht schaden, dachte sich vermutlich auch Red Hat – und veröffentlichte Quarkus. Das neue Framework soll Java fit machen für das Cloud-Native-Zeitalter mit Kubernetes und Serverless.

Für eine Programmiersprache hat sich Java erstaunlich lange gehalten. Das ist nicht unbedingt verwunderlich, gibt es doch auch heute noch Delphi- und BASIC-Programmierer. Interessant und bemerkenswert ist eher, wie lange Java sich ungekrönt auf dem Thron der Programmiersprachen gehalten hat, was die Verbreitung und die Wichtigkeit angeht. Damit dies auch in Zukunft so bleibt, Java also bestens aufgestellt ist für das Zeitalter von Serverless, Containern, Kubernetes und Cloud Native, bedarf es nach Meinung vieler allerdings ein paar kleiner Helferlein.

Brian Goetz, Java Language Architect bei Oracle, führte auf der JAX 2018 in seiner Session Java Language Future aus, wie es um die Zukunft von Java bestellt ist. Auch das Projekt Manifold dient dem Zweck, Java mit neuen Funktionen für moderne Anwendungsgebiete auszustatten.

Quarkus macht Container & Cloud zur Prio

Red Hat geht mit dem Framework Quarkus forsch in Richtung Zukunft und macht „Container First“ zum definierenden Motto. Was schön klingt, spiegelt sich auch in technischer Hinsicht wieder: Zunächst wäre dort die geringe Startup-Zeit zu erwähnen (im Millisekundenbereich), was natürlich für die automatische Skalierung von Microservices in Containern und auf Kubernetes wunderbar ist. Auch im Serverless-Bereich bzw. im Umfeld von Function as a Service (FaaS) bietet das Vorteile, etwa für das sofortige Ausführen von Anwendungen.

Der geringere Footprint ist ebenfalls nicht zu verachten und da Anwendungen, die mit Quarkus erstellt werden, auch noch wenig Speicher fressen, sind auch umfangreiche und engmaschige Microservices-Architekturen, die auf mehrere Container angewiesen sind, problemlos umsetzbar.

In Umgebungen wie Kubernetes werden Architekturen nach dem 12-Factor-Prinzip unterstützt, doch ein wahrer Clou für das Schreiben von Cloud-nativen Java-Anwendungen ist die Vereinheitlichung von imperativem und reaktivem Programmierstil, die Quarkus verspricht. Während Java-Entwickler wohl eher mit einem imperativen Coding-Paradigma vertraut sind, können mit Quarkus auch reaktive Ansätze endlich eingesetzt werden, die Vorteile Event-getriebener Entwicklung und von Asynchronität sind also zum Greifen nahe. Gerade für Unternehmen ist das eine gute Nachricht, sofern sie auf stark nebenläufige und responsive Anwendungen setzen.

Build it. Save it. Run it. – mit Java

Das Schönste, was einem Entwickler passieren kann? Vermutlich ist die Antwort auf diese Frage: „Wenn die Anwendung einfach läuft.“ Mit Quarkus soll genau das – obwohl wir hier von Java sprechen – problemlos funktionieren. Maven oder Gradle? Nimm einfach das, was dir besser passt. Das Ziel ist es, für jeden Use Case – egal ob Microservices-Anwendung oder Web-Applikation – möglichst keine Konfiguration nötig zu haben.

Traditionelle Java-Entwickler fluchen zudem seit Jahrzehnten über die (nicht vorhandene) Möglichkeit, auf ständiges Kompilieren zu verzichten. Quarkus möchte mit seiner Live-Coding-Funktion diesen Teufelskreis aus Kompilieren, Deployen und Refreshen des Browsers durchbrechen: Auch mit Java Code soll es zukünftig so genügen, einfach den Code zu schreiben und den Browser zu refreshen, um die aktualisierten Ergebnisse zu sehen.

Ein Framework, sie alle zu binden

Quarkus sieht sich selbst als sogenanntes „Full-Stack Framework“, das wird aus den obigen Ausführungen eigentlich schon recht deutlich. Dabei wurde das Rad nicht neu erfunden, stattdessen setzt man auf eine Reihe von Standards und anderen Frameworks bzw. Tools, um möglichst breit gefächert nutzbar zu sein. Zu den genutzten Standards gehören etwa Eclipse MicroProfile und Vert.x, JPA/HIbernate, JAX-RS/RESTEasy und Netty. Die folgende Liste zeigt die unterstützten APIs und Spezifikationen von Eclipse MicroProfile:

  • Eclipse MicroProfile Config
  • Eclipse MicroProfile OpenTracing
  • Eclipse MicroProfile Metrics
  • Eclipse MicroProfile Fault Tolerance
  • Eclipse MicroProfile Health
  • Eclipse MicroProfile OpenAPI
  • Eclipse MicroProfile JWT Propagation
  • Eclipse MicroProfile REST Client
  • Eclipse MicroProfile Reactive Streams Operators
  • Eclipse MicroProfile Reactive Messaging (Draft Specification)

Das Erweiterungs-Framework von Quarkus macht wie erwähnt auch Bibliotheken und Tools wie Apache Camel & Kafka, Kubernetes, OpenShift, Jaeger und Prometheus nativ nutzbar. Außerdem kann Quarkus durch o.g. Extension Framework einfach erweitert werden.

Es ist hierbei wichtig zu erwähnen, dass Quarkus auf die GraalVM und die SubstrateVM setzt, welche die Erweiterung durch neue Frameworks ermöglichen. Sie sorgen allerdings auch, um den Kreis zum Beginn zu schließen, für das Fundament der ganzen Funktionalität von Quarkus.

Red Hats Java Framework für die IT-Welt von Morgen mit Serverless, Microservices, Containern, Kubernetes, FaaS und der Cloud steht unter der Apache-Software-2.0-Lizenz und ist natürlich Open Source, wie man es vom jüngst von IBM aufgekauften Unternehmen gewohnt ist.

Weitere Informationen zu Quarkus gibt es auf der Homepage des Projekts, im Blog-Beitrag von Jason Greene und natürlich auf GitHub.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: