Rémy Schumm blog ingénieur

Quarkus Hallo Welt

publiziert am 09. 04. 2019 um 11:12

…hat da mal jemand gesagt, JavaEE aka Jakarta etc. Applikationen seien zu gross und zu langsam - und daher nix für Microservice etc.? Hypersonic Startup
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:

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

Developer Joy

Bild: Quarkus

Nachtrag: Konfiguaration

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.


zurück zum Seitenanfang