…hat da mal jemand gesagt, JavaEE aka Jakarta etc. Applikationen seien zu gross und zu langsam - und daher nix für Microservice etc.?
Mit Quarkus startet eine Cloud-Native-Hallo-Welt-Java-Applikation in 6 ms und das «Fat-Jar» ist nur 20 MB gross - statt üblicherweise 100 MB oder mehr.
n.b.: unterdessen hat sich Quarkus weiterentwickelt und ich empfehle als Beispiel eines der Tuturials auf der Quarkus-Page durchzuspielen.
Und auch sonst verspricht Quarkus wahnsinnig spannende Dinge, die man sonst in Java nicht gewohnt ist:
ms
Bereich (siehe Bild unten…)Quarkus ist einerseits ein Framework mit oben genannten features und Vereinfachungen, wie es sich ein Java-Entwickler für den Alltag wünscht, und anderseits ein
auf GraalVM basiertes Build-System, das verspricht, aus Java sehr schnelle und sehr kleine «native» Applikationen zu bauen, welche sich durch ihren kleinen Fussabdruck an Speicher und Startupzeit ideal für die modernen Microservice-Architekturen eignen.
Quarkus erreicht diese Schlankheit, indem es basiereden auf einem Plug-In System für Komponenten (z.B. CDI, ORM etc.) und der Analyse der benötigten Klassen (u.a.) die Java JVM sozusagen so abspeckt, dass nur noch das mitgeliefert wird, was die App wirklich zum «Leben» benötigt.
Ausserdem liefert Quarkus auch ein s2i Builder Image für Openshift, was das Bauen der Applikationen in OpenShifts eleganter DevOps-Manier nochmals enorm vereinfacht.
Hier kommt ein weiteres Beispiel aus meiner «Hallo Welt Reihe»: Ein Quarkus-Hallo-Welt, das auf dem Getting-Started von Quarkus basiert und von mir noch etwas ausgebaut und zusammengefasst wurde: hier ist das Beispiel auf github
Um die Applikation lokal laufenzulassen, mit Hot-Reaload aktiv:
mvn compile quarkus:dev
Bild: Quarkus
Wie immer, braucht es Stage-Abhängige Konfigurationen für die App. Auch das hat Quarkus wunderbar gelöst:
For Quarkus Configuration: to override the config values in application.properties
just set a Environment Value in the OpenShift Deployment Config, e.g.:
quarkus.datasource.url -> jdbc:postgresql://postgresql:5432/holz?sslmode=disable
if a Java System Property is needed, use -Dquarkus.datasource.url...
,
if a Unix Env is needed, use export QUARKUS_DATASOURCE_URL=...
respectively.
Hinweis: dieser Blog wiederspiegelt meine persönliche Meinung und hat nichts mit meiner Anstellung als Dozent der zhaw noch mit anderen Anstellungen zu tun.