Wie Java in der Cloud zur Rakete werden kann

Die Programmiersprache Java fühlt sich heute so an, wie als vor Jahren die alten Festplatten auf SSD’s umgestellt wurden. Neue Java Frameworks wie Quarkus und Spring Native können den Programmierenden aufzeigen, dass Java nun auch in der Cloud seine Stärken einsetzen kann – dies mit wenig Ressourcenverbrauch und vor allem blitzschnell.

Java

Das «altbewährte» Java wird im professionellen Enterprise Umfeld auch heute noch weit verbreitet eingesetzt. Viele andere Programmiersprachen werden aber immer beliebter, wie Python, GoLang, R, JavaScript und wie sie alle heissen.

Die Programmiersprachen Java, Python, JavaScript und R im Vergleich, nach Suchaufkommen auf der Google Suchmaschine. Zeigt den Trend bzw. die Aktualität über die Zeit.
Die Programmiersprachen Java, Python, JavaScript und R im Vergleich, nach Suchaufkommen auf der Google Suchmaschine. Zeigt den Trend bzw. das Interesse über die Zeit.
(Bildquelle: https://trends.google.de)

Gemeinhin gilt Java zurecht als etwas schwerfällig und Ressourcenintensiv. Das Aufstarten einer Anwendung mitsamt Applikationsserver kann gut und gerne 15 Sekunden dauern. Wie verhält sich dies mit den modernen Cloud Ansätzen? Da sind schnelle Aufstartzeiten und dementsprechende Skalierungsmöglichkeiten fast schon Pflicht.

Zum Glück bieten sich inzwischen zwei Lösungen an, die Java auch in der Cloud zur Rakete werden lassen können:  Quarkus und Spring Native.

Quarkus

Schon recht ausgereift ist Quarkus, ein von Redhat entwickeltes Cloud Native Java Framework – wobei dies in der prkatischen Anwendung meist auf einer Orchestrierungsplatform wie Kubernetes läuft.

Quarkus benötigt sehr wenig Ressourcen, da alles Unnötige entfernt wird. Die Startup Zeiten sind grandios und befinden sich im Millisekunden Bereich. Auf Kubernetes ausgeführt, können zusätzliche Instanzen bei Bedarf blitzschnell aufgestartet werden.

Der Hauptkritikpunkt bei Quarkus ist, dass nochmals ein zusätzliches Java Framework eingesetzt wird und die Community auch noch recht klein ist.

Gemäss einem Bericht von INNOQ verwendet Quarkus viele Elemente aus Java/Jakarta-EE und damit werden sich vor allem die auf Java-EE  spezialisierten Personen beim Umstieg leichttun.

Spring Native

Viele Java programmierende Personen setzen jedoch seit langem auf das Spring Boot Java Framework. Hierzu gibt es eine riesige Community, dies vor allem wegen der Einfachheit und des grossen Funktionsumfangs.

Erfreulicherweise arbeitet das Unternehmen VMware am Spring Native Open Source Projekt und im März 2021 wurde bereits die Beta Version herausgegeben!

Damit wird das Potential eines voll ausgereiften Frameworks mit grosser Community nun auch Cloud-fähig. In der Beta Version mag sicher noch die eine oder andere Funktionalität fehlen, es wird aber nur eine Frage der Zeit sein, bis ein Grossteil der Spring Features auch für die Cloud bereit sein wird.

Ein Geschwindigkeitsvergleich von Spring Boot zu Spring Native:

Geschwindigkeitsvergleich einer kleinen Java Anwendung
<<< Links Spring Boot mit 2.112 Sekunden           Rechts Spring Native mit 0.067 Sekunden >>>
Geschwindigkeitsvergleich einer kleinen Java Anwendung, reine Startzeit mitsamt Tomcat Application Server.
(Quelle: Github, Antonio Moreno | Videobearbeitung nebeneinander durch Reto Kaufmann)

Knative

Wird nun Java über Kubernetes ausgerollt, so muss sich die programmierende Person (leider) auch sehr stark mit den Infrastrukturkomponenten befassen.

Hier kommt das neue Knative Open Source Projekt von Google ins Spiel. Kurz gesagt, Knative läuft auf Kubernetes und ermöglicht serverlose Anwendungen auf einfache Art und Weise. Dabei wird die Komplexität von Kubernetes durch eine Abstraktionsschicht versteckt. Personen die Software entwickeln, können sich nun vollständig auf das Schreiben des Programmcodes konzentrieren.

Gemäss Ariel Shupers Beschreibung kann mit Knative eine Anwendungen vor Ort, in der Cloud oder in einem Rechenzentrum eines Drittanbieters laufen und ist Cloud-agnostisch, das heisst, die Anwendung kann in jeder Cloud betrieben werden. Dadurch wird die Bindung an einen Cloud-Anbieter vermieden, denn viele sehen das als den grössten Nachteil aktueller serverloser (FaaS) Umgebungen wie AWS Lambda, Azure Functions oder Google Cloud Functions.

Die Kombination aus Spring Native und Knative kann in der Cloud zum unschlagbaren Gespann werden. Wir dürfen gespannt sein, wie der Programmiersprachen Trend in drei Jahren aussehen wird.

 


Weiterführende Links


Beitrag teilen

Reto Kaufmann

Reto Kaufmann ist IT Architect bei der LGT Financial Services AG und bloggt aus dem Unterricht des CAS Cloud and Platform Manager.

Alle Beiträge ansehen von Reto Kaufmann →

Schreibe einen Kommentar