Quarkus: Der Blick über den Tellerrand

Das neue Open-Source-Framework Quarkus tritt seit März 2019 mit einem imperativen und reaktiven Programmierstil vereinenden Modell an und will bei Anwendungen für die Java-Plattform zugunsten kürzerer Startzeiten nicht nur Container an die erste Stelle rücken, sondern auch auf Reflections verzichten.

Architektur/Methoden  –  21 Kommentare

(Bild: Shutterstock)

Unter dem Slogan "Supersonic Subatomic Java" hat im Frühjahr 2019 das von Red Hat gesponserte Quarkus die Bühne der Java-Frameworks betreten. Das neue Open-Source-Projekt steht mit allen Erweiterungen unter der Apache Software Lizenz 2.0. Ein großer Teil der beteiligten Contributoren sind Red-Hat-Mitarbeiter.

Was ist Quarkus?

Doch worum genau geht es? Wodurch zeichnet sich Quarkus aus? Um das neue Java-Framework im Detail zu beleuchten, nähert sich der Autor diesen Fragen aus der Sicht eines Spring-Aficionado. Oberflächlich lässt sich Quarkus als Webframework für die JVM betrachten: Über die eingebundene JAX-RS-2.1-Implementierung RESTEasy lassen sich HTTP-Endpunkte definieren, die in der Regel JSON-ähnliche Dinge ausliefern. Quarkus stellt eine Laufzeitumgebung für RESTEasy und viele andere Komponenten zur Verfügung.

Mit Werkzeugen für Maven und zum Teil auch für Gradle lässt sich anschließend ein lauffähiges Paket schnüren. Im Gegensatz zu anderen Frameworks wie Spring Boot bietet sich bei Quarkus nicht die Möglichkeit, Projekte in einen anderen Container zu deployen. Quarkus nutzt Undertow als Webserver.

Das folgende Listing zeigt eine mögliche, in Quarkus entwickelte JAX-RS-Resource, die unverändert aus dem "Getting Started Guide" entnommen ist.

package org.acme.quickstart;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello\n";
}
}

Zur Ausführung dieser Ressource ist Quarkus nicht zwingend erforderlich – GreetingResource ist ebenso in Containern wie Wildfly sofort lauffähig.

Quarkus und andere Frameworks wie Spring und Micronaut lediglich als reine Webframeworks zu betrachten, wird ihnen nicht gerecht, denn sie stellen weit mehr als nur die Möglichkeit zur Verfügung, HTTP-Ressourcen anzulegen. Der Autor stuft daher Quarkus ebenso wie Spring als Anwendungsframework ein. Sie stellen grundlegende Funktionen wie Context und Dependency Injection (CDI), Konfigurationsmechanismen, Datenbankkonnektivität und viele mehr zur Verfügung.

Da Quarkus noch deutlich jünger ist als Spring, ist auch sein Ökosystem noch vergleichsweise klein. Der Vorteil ist allerdings, dass viele Aspekte eines Anwendungsframeworks für die Java-Plattform noch einmal neu durchdacht werden konnten, ohne auf Breaking Changes Rücksicht nehmen zu müssen.

Die Eigenwerbung

Neben der eingangs erwähnten, wenig aussagekräftigen, Tagline "Supersonic Subatomic Java" beschreiben die Macher Quarkus mit den folgenden Attributen:

  • Container First
  • Unifies Imperative and Reactive
  • Developer Joy
  • Best-of-Breed Libraries and Standards

Es stellt sich die Frage, ob sich dahinter mehr als nur Marketing versteckt, und wenn ja, was.