Quarkus – Supersonic Subatomic Java

Autor:

Ajay Kumar

Quarkus ist ein Open-Source-Projekt, das unter einer Apache-License veröffentlicht und von Red Hat mitentwickelt wurde. Es handelt sich um ein Kubernetes-natives Java-Framework, auch bekannt als „supersonisches subatomares Java“, das es Entwicklern ermöglicht, Java-Anwendungen zu erstellen, die für diese Art von Umgebungen gedacht und dafür optimiert sind.

Die meisten Java-Anwendungen, die in einem Container laufen, ändern sich nach dem Start nicht mehr. Daher konnte ein Großteil der schweren Arbeit zur Lösung aller zur Laufzeit stattfindenden Dynamiken in die Build-Phase verlagert werden. Das Ergebnis ist eine saubere und vollständig optimierte JAR-Datei, in der hauptsächlich direkte Aufrufe verwendet werden. Kombiniert man dies mit einer optimierten JVM wie OpenJ9, kann man bereits von schnelleren Startzeiten und einem geringeren Speicherbedarf profitieren. Dies ist die JVM-Option, die Quarkus anbietet. Die andere Option ist die native Variante.

Quarkus verfolgt eine „Container first“-Philosophie und unterstützt daher eine speziell für Container optimierte native Kompilierung, die jedoch völlig optional ist. Hierfür wird die GraalVM verwendet, die native Java-Executables ausführen kann. Diese starten viel schneller und benötigen auch deutlich weniger Speicher als eine herkömmliche JVM. Damit eignet sich Quarkus hervorragend für serverless, Cloud- und Kubernetes-Plattformen.

Quarkus ist so konzipiert, dass es mit gängigen Java-Standards, Frameworks und Bibliotheken wie Eclipse MicroProfile und Spring sowie mit Apache Kafka, RESTEasy (JAX-RS), Hibernate ORM (JPA), Infinispan, Camel und vielen anderen zusammenarbeitet.

Die Dependency-Injection-Lösung von Quarkus basiert auf CDI (Contexts and Dependency Injection) und umfasst ein Erweiterungs-Framework zur Erweiterung der Funktionalität und zum Konfigurieren, Booten und Integrieren eines Frameworks in Ihre Anwendung. Das Hinzufügen einer Erweiterung ist so einfach wie das Hinzufügen einer Abhängigkeit, oder Sie können das Quarkus Tooling verwenden.

In der folgenden Abbildung sind die Details für eine REST (jvm/native) basierte Anwendung mit Speicherverbrauch und Leistung dargestellt :

 

Freundlich für Entwickler

Quarkus wurde mit Blick auf die Benutzerfreundlichkeit für Entwickler entwickelt und bietet außerdem die folgenden Funktionen :

    • Live-Coding, damit die Entwickler die Auswirkungen von Codeänderungen sofort überprüfen und Fehler schnell beheben können
    • Vereinheitlichte imperative und reaktive Programmierung mit einem eingebetteten Managed Event Bus
    • Einheitliche Konfiguration
    • Einfache Erzeugung nativer ausführbarer Dateien

Quarkus wurde entwickelt, um bei der Entwicklung von Anwendungen den vertrauten imperativen Code und den nicht-blockierenden, reaktiven Stil nahtlos zu kombinieren.

Dies ist sowohl für Java-Entwickler hilfreich, die es gewohnt sind, mit dem imperativen Modell zu arbeiten und sich nicht umgewöhnen wollen, als auch für diejenigen, die mit einem Cloud-nativen/reaktiven Ansatz arbeiten.Das Quarkus-Entwicklungsmodell kann sich an jede Anwendung anpassen, die Sie entwickeln.

Quarkus ist eine effektive Lösung für die Ausführung von Java in dieser neuen Welt der serverlosen Architektur, Microservices, Container, Kubernetes, Function-as-a-Service (FaaS) und Cloud, weil es mit all diesen Dingen im Hinterkopf entwickelt wurde.

Spring Boot Vs Quarkus Vergleich

Wir können eine Spring-Boot-Anwendung leicht in eine Quarkus-Anwendung umwandeln, und Quarkus bietet auch eine hervorragende Unterstützung für die Erstellung nativer Images.

Hier ist das Leistungsdiagramm für SpringBoot und Quarkus, mit jvm und nativen Images :-

 

 

Wir sehen, dass unsere jvm/native Quarkus-Anwendung schneller startet als Spring Boot jvm und nativer Modus. Mit nativen Images ist die Anwendung fast 10x schneller als eine normale jvm-Anwendung. Aber nichts in dieser Welt kommt ohne Opfer aus. Der einzige Nachteil bei der Erstellung nativer Java-Executables ist, dass die Erstellung eines Images viel Zeit in Anspruch nimmt, und das ist der einzige Schmerz!!!

Ich hoffe, dass Ihnen dieser Artikel gefallen hat. Der Hauptzweck dieses Artikels ist es, dem Leser einen schnellen und präzisen Einblick in das Quarkus-Framework und seine Vorteile zu geben.