"Oracle Code One"-Tagebuch – Tag 2: "Future-proofed Java"

Neuigkeiten von der Insel  –  0 Kommentare

Liebes Tagebuch,

für heute habe ich mir vorgenommen, auf der "Code One"-Konferenz einmal dem Gerücht nachzugehen, Java sei mit seinen mittlerweile mehr als 20 Jahren nicht mehr zeitgemäß. Als Maßstab für den Begriff zeitgemäß habe ich dabei so unterschiedliche Trends wie Microservices, Container, Cloud-native, Serverless oder NoSQL angesetzt.

Natürlich könnte ich es mir an dieser Stelle einfach machen und behaupten, dass dank Spring Boot und Spring Cloud Java auf jeden Fall bestens für Microservice-Projekte in der Cloud geeignet sei. Was aber, wenn man den mit Spring einhergehenden Vendor-Lock-in vermeiden und trotzdem Java für diese Art von Projekten nutzen möchte?

Sicher, mit JAX-RS, CDI und JPA lassen sich Microservices schnell und einfach auf Basis des Enterprise-Java-Standards Java EE – oder zukünftig Jakarta EE – implementieren. Das eigentliche Problem liegt aber weniger in den einzelnen Services als vielmehr in deren Zusammenspiel. Wie sieht es in einem stark verteilten System von Microservices mit den klassischen Querschnittsfunktionen wie Security, Tracing, Logging, Health Checks oder Metrics aus. Diese wurden einem bisher von einer zentralen Runtime (a.k.a. Application Server) abgenommen. Und was ist, wenn einmal ein Service ausfällt? Wie bekommen dies die anderen Service mit und wie reagieren sie darauf?

Eine mögliche Lösung stellt das in der Eclipse Foundation beheimatete und von namenhaften Firmen, wie IBM, Red Hat, Oracle, Fujitsu, Payara oder Tomitribe, unterstütze Open-Source-Projekt MicroProfile dar. Erst vor wenigen Tagen in der Version 2.1 veröffentlicht, hat MicroProfile in den letzten zwei Jahren in der Java-Community mehr und mehr an Bedeutung gewonnen. Dank diverser Implementierungen von mittlerweile acht unterschiedlichen Herstellern hat MicroProfile das Zeug, zu einem neuen Standard für Java-basierte Microservices-Anwendungen zu werden. Kein Wunder also, dass es auf der Code One deutlich über 20 Sessions zu diesem Thema gibt.

Besonders gefallen hat mir die Session "Cloud-native, Service-Meshed Java Enterprise with Istio" von Sebstian Daschner. Er hat im Rahmen seiner Session anhand einer netten kleinen Live-Demo gezeigt, wie gut Java EE kombiniert mit MicroProfile und die neue Wunderwelt der Cloud zusammenspielen. Während auf Java EE/MicroProfile basierende Microservices in Docker verpackt und via Kubernetes gemanagt wurden, hat Istio die Verwaltung des Service Mesh, also der deployten Services, übernommen.

Dank Istio Sidecars (Service Proxies) konnten die benötigten Querschnittsaufgaben, wie Tracing, Security oder Resilience, aus dem Code der Services heraus in die Infrastruktur verlagert werden. Da sowohl Istio als auch MicroProfile stark auf Standards setzen, ließen sich die verteilten Tracing-Informationen der einzelnen Services problemlos mit Jaeger verwalten und mit dem Grafana Dashboard visualisieren. Eine tolle Demo, die Lust aufs Ausprobieren macht.

Mindestens genauso interessant, wenn auch in eine andere Richtung gehend, war die Session "Jakarta EE meets NoSQL in the Cloud Age" von Elder Moraes (Oracle) und Otavio Santana (Tomitribe). Elder und Otavio sind in ihrer Session auf die verschiedenen NoSQL-Datenbankentypen – Key/Value, Document, Column-based, Graph und Multi-Model – eingegangen und haben deren Unterschiede zu klassischen relationalen Datenbanken aufgezeigt. Anhand eines Beispiels haben sie im Anschluss demonstriert, wie mit Java-EE-Bordmitteln und Eclipse JNoSQL die bekanntesten der derzeit am Markt verfügbaren NoSQL Datenbanken in Java-EE-Projekte eingebunden werden können. Basierend auf den Standardannotationen von JPA, ergänzt um ein paar JNoSQL-eigenen APIs, ist die Anbindung einer NoSQL-Datenbank mit wenigen Zeilen Code erledigt.

JNoSQL ist als Basis für eine neue API zur Anbindung vonNoSQL-Datenbanken in Jakarta EE ausgewählt. Es ist geplant, dass eine entsprechende Spezifikation Bestandteil des kommenden Releases, also Jakarta 9, werden wird.

Auch die Keynote stand ganz im Zeichen der Cloud. Amit Zavery (Executive Vice President, Fusion Middleware and PaaS Development, Oracle) betonte gleich zu Beginn die große Bedeutung der Cloud für zukünftige Anwendungsentwicklung. "Building next generation cloud­­-native applications becomes more and more important", so Zavery.

Dabei sei es vor allem wichtig die Cloud nicht nur als Bare-Metal oder IaaS (Infrastructure as a Service) zu verstehen, sondern vor allem auch Innovationen in der Cloud voranzutreiben. Services für KI und Data Sience, Blockchain, Digital Assistant und Virtual beziehungsweise Argumented Reality seien die echten Mehrwerte der Cloud.

Oracle habe sich mit der Oracle Cloud Infrastructure (OCI) das Ziel gesetzt, genau diese Themen in den Fokus zu stellen. Dabei setze man bewusst darauf, wann immer möglich mehrere Kanäle zu unterstützen. So könne man zum Beispiel bei der Verwendung des Cloud-basierten Digital Assistant Services zwischen verschiedenen Varianten, wie Alexa oder Siri, frei wählen.

Wie eine Cloud-Anwendung unter Einsatz der verschiedenen Services aussehen kann, demonstrierte Matt Thompson (Vice President of Developer Engagement and Evangelism, Oracle) am Beispiel eines Car Selling Chatbots. Ein proaktives, mittels KI selbstlernendes Conversation Interface übernimmt die Kommunikation mit dem Nutzer. Serverless Functions steuern die Businesslogik und stellen die Verbindung zum Backend dar. Die eigentliche Verkaufsoperation wird dann im Backend via Blockchain Cloud abgewickelt. "That’s not my father’s monolithic application", kann man da nur sagen.

Zavery betonte während der Keynote mehrfach, dass man bei der Oracle Cloud Infrastructure bewusst auf Open-Source-Techniken setze. Der eigene Code könne so problemlos auf die Cloud-Angeboten anderer Anbieter migriert werden – vice versa.

Warum Open Source gerade im Umfeld der Cloud so wichtig ist, erläuterte im Anschluss Dee Kumar von der Cloud Native Computing Foundation (CNCF). Laut Kumar sei es nur möglich, nachhaltige Lösungen zu schaffen, wenn man sich die "Power" der Open-Source-Community zu Nutze mache. "Successful digital transformation depends on making cloud-native computing universal and sustainable. This only works by harnessing the power of open source", so Kumar.

Die CNCF kann als eine Art herstellerneutrales "Zuhause" für schnell wachsende Cloud-native Open-Source-Projekte auf GitHub verstanden werden. Ziel von CNCF ist es, diese Projekte auf ein professionelles Level zu heben, welches potenziellen Nutzern einen entsprechenden Investitionsschutz bietet. Zu den bekanntesten Projekten zählen derzeit sicherlich Kubernetes und Prometheus. Aber auch weniger bekannte Projekte wie OpenTracing API und Jager (beide Distributed Tracing) oder Fluent, Logging), Envoy (Service Mesh) und Helm (Packaging) finden sich dort.

Wer in der nahen Zukunft plant, sich auf den Weg hin zu Cloud-native zu bewegen, sollte unbedingt einen Blick auf vom CNCF empfohlene Cloud-native Trail Map werfen. Die dort aufgezeigten 10 Schritte geben einen guten Überblick darüber, welche Herausforderungen einem begegnen werden und wie man mit diesen umgehen sollte.

Wie wichtig Oracle eine aktive Java-Community ist, zeigt das kürzlich ins Leben gerufene und im Rahmen der Keynote durch Steven Chin (Principal Engineer, Oracle) präsentierte Groundbreaker-Ambassador-Programm. Mit ihm sollen besonders aktive Mitglieder der Community honoriert werden. Das Interessante an dem Programm ist, dass zukünftig jeder einen potenziellen Botschafter nominieren kann. Diese müssen lediglich ein paar Grundbedingungen erfüllen, die von dem jeweiligen Themenfokus (u.a. Microservices & Containers, Machine Learning & KI, Datenbank, Programmiersprachen & Frameworks, DevOps) abhängen.

Unter den Nominierten werden dann zukünftig einmalig pro Jahr die Groundbreaker Ambassador Awards vergeben. Auch hier findet die Abstimmung öffentlich statt. Für das erste Jahr hat Oracle ausnahmsweise diese Aufgabe übernommen und die ersten Award-Gewinner bestimmt, welche im Rahmen der Keynote ihre Auszeichnungen übergeben bekommen haben:

  • Doug Cutting – Co-Schöpfer von Hadoop
  • Neha Narkhede – Co-Founder und CTO von Apache Kafka
  • Charles Nutter – Co-Leader von JRuby
  • Graeme Rocher – Schöpfer von Grails und Micronaut
  • Guido van Rossum – Schöpfer von Python

Liebes Tagebuch, mein Fazit für den zweiten Tag der "Code One"-Konferenz fällt ähnlich positiv aus wie schon am Tag zuvor. Um die Zukunft von Java in Zeiten von Microservices, Containern, Cloud und Serverless mache ich mir zumindest keine Sorgen mehr. Ganz im Gegenteil: Ich kann nur bestätigen, was James Governor von RedMonk bereits letztes Jahr im Rahmen der JavaOne-Keynote geäußert hat: "Things have changed more in the Java ecosystem in the last 3 weeks than they have in the previous 13 years.", wobei ich die zitierten drei Wochen eher durch 12 Monate ersetzen würde. Mehr dazu aber in meinem nächsten Tagebucheintrag. Morgen ist ja auch noch ein Tag.