Doppelter Geburtstag!

MicroProfile 1.4 und MicroProfile 2.0 erschienen

Michael Hofmann

© Shutterstock.com / Kalakruthi

Mit MicroProfile 1.4 und MicroProfile 2.0 hat die MicroProfile-Community gleich zwei neue Releases am gleichen Tag (29.06.2018) veröffentlicht. Mit dieser Doppel-Feier will man zwei Fliegen mit einer Klappe schlagen. Zum einen standen größere Anpassungen für Java EE 8 an und zum anderen will man die schon vorhandenen Spezifikationen funktional erweitern. Außerdem sind in den letzten Wochen und Monaten einige Tutorials entstanden, die den Entwicklern mehr Infos und Beispiele zur Verfügung stellen sollen, um die Integration der neuen Spezifikationen in ihre Cloud-ready-Anwendungen zu erleichtern.

MicroProfile 2.0

Die bisherigen MicroProfile-Spezifikationen setzen sehr stark auf JAX-RS, CDI und JSON-P und in all diesen drei Frameworks kommen mit Java EE 8 zum Teil umfangreiche Neuerungen (u.a. CDI 2.0, JSON-P 1.1, JSON-B 1.0 und JAX-RS 2.1) auf den Tisch. Mit MicroProfile 2.0 werden die vorhandenen Spezifikationen an die Neuerungen von Java EE 8 angepasst, was die gemeinsame Verwendung von Java EE 8 und MicroProfile 2.0 ermöglicht.

Die MicroProfile-Community erfüllt somit das Versprechen, zu Java EE und zukünftig zu Jakarta EE kompatibel zu bleiben. Einer späteren Verschmelzung der beiden Spezifikationen (Jakarta EE und MicroProfile) steht also auch weiterhin nichts im Wege. Zumal beide Projekte mittlerweile unter dem Dach von Eclipse angesiedelt sind und das Vorhaben auch in der Project Charta bestätigen („Eclipse MicroProfile is such a project that EE4J will review as a source of innovations for incorporation into EE4J“). Diese Aussage stammt noch aus der Zeit, als EE4J als Arbeitstitel für die Nachfolge von Java EE verwendet wurde. Aber am Inhalt der Aussage hat sich seitdem nichts geändert, außer dass Java EE jetzt Jakarta EE heisst.

MicroProfile 1.4

Das zweite Geburtstagskind ist MicroProfile 1.4. Hier wurden mit JWT Propagation 1.1, Fault Tolerance 1.1, OpenTracing 1.1, REST Client 1.1 und MicroProfile Config 1.3 ein paar neue, aber altbekannte Geburtstags-Gäste zur Feier eingeladen. JWT Propagation 1.1 ermöglicht jetzt die konfigurative Angabe des Public Keys und des Issuers zur Echtheitsprüfung des empfangenen JWT Tokens. Bei Fault Tolerance 1.1 wurde die Forderung der Community umgesetzt, dass der Status der jeweiligen Fault Tolerance Operationen in den Metrics-Ausgaben sichtbar sein soll. Sobald beide Spezifikationen gemeinsam verwendet werden, ist an zentraler Stelle erkennbar, welchen Status der jeweilige Circuit Breaker, Retry, Timeout, Fallback oder Bulkhead hat.

Mit REST Client 1.1 ist es jetzt möglich, asynchrone Aufrufe zu verwenden. OpenTracing 1.1 bringt nur kleinere Korrekturen mit sich, u.a. wurde der Wechsel auf Version 0.31.0 des OpenTracing APIs vollzogen. Genauso ist es bei MicroProfile Config 1.3. Die Erweiterungen hier beziehen sich im wesentlichen auf die Converter. Der etwas spärliche neue Funktionsumfang von MicroProfile 1.4 ist im Grunde nicht verwunderlich, da die Anpassungen für Java EE 8 und somit für MicroProfile 2.0 doch einiges an vorhandenen Ressourcen aufgebraucht haben.

Die anfängliche Planung des MicroProfile 1.4 Releases bestand hauptsächlich aus Beispielen und Tutorials zur Verwendung der jeweiligen MP-Spezifikationen. Dass dies nun nicht mehr im Release explizit erwähnt wird, heißt nicht, dass es nicht gemacht wurde. Die Community hat auch hier fleißig weitergearbeitet und einiges an Informationsquellen zur Verfügung gestellt. Dazu gehören neben den Spezifikationen auch noch Beispiele, Tutorials, Javadoc und Slides aus den verschiedenen Präsentationen der letzten Jahre. Über die Homepage von MicroProfile kommt man sehr einfach auf die Sub-Projekte, wie z.B. MicroProfile Config oder MicroProfile Fault Tolerance, sowie auf die wachsende Zahl von Blog-Beiträgen.

Darüber hinaus ist die zugehörige Google Group verlinkt und wer noch tiefer einsteigen will, bekommt mit „See The Code“ die Liste der einzelnen GitHub-Projekte. Als guter Einstiegspunkt in die Thematik ist das MicroProfile-Conference-Projekt zu nennen. Mit dieser Showcase-Anwendung, die für jeden an der Spezifikation beteiligten Applikations-Server (Payara, WildFly Swarm, Apache TomEE, WebSphere Liberty) einen Microservice zur Verfügung stellt, werden die Anfangsschwierigkeiten für den Entwickler stark vereinfacht. Ganz nach dem Motto: eine Zeile Code sagt mehr als tausend (Spec-)Worte.

In Sachen Server…

Doch damit noch nicht genug. Auch die Applikations-Server stellen weiterreichende Informationen zur Verfügung. Auf den jeweiligen Infoseiten findet man zusätzliche Beispiele und Infos, um die Umsetzung der eigenen Microservices mit MicroProfile zu vereinfachen. Mit einer kurzen Internet-Recherche zum jeweiligen Applikations-Server und MicroProfile wird man sehr schnell fündig: mit Blog-Beiträgen, Tutorials und zum Teil GitHub-Projekten unterstützen hier die Applikations-Server ihre jeweilige Entwickler-Community. Die Javadoc-Dokumentation ist zum Beispiel auf der Webseite von OpenLiberty verfügbar.

Ausblick

Wer noch tiefer in die MicroProfile-Projekte eintaucht, wird ein paar Spezifikationsvorschläge finden, die eventuell in Zukunft in MicroProfile integriert werden könnten. So sind heute schon Vorschläge zum Thema MicroProfile Streams (ein API für den Umgang mit Message Streams), Long Running Actions (Sicherstellung einer globalen Konsistenz der Daten bei verteilten Systemen) und MicroProfile Service Mesh (Verwaltung und Orchestrierung des verteilten Systems) vorhanden. Mit Long Running Actions wird die Umsetzung von SAGAs möglich, da angedacht ist, sog. Business-Transaktionen zusammen mit den zugehörigen Kompensationstransaktionen zentral zu registrieren. Diese zentrale Stelle kümmert sich dann um den korrekten Ablauf der einzelnen Aufrufe und führt die passenden Kompensationsaufrufe aus, falls nötig.

Die ersten Schritte in Richtung Service Mesh wurden bereits jetzt schon umgesetzt, wie die Integration von MicroProfile OpenTracing mit Istio zeigt. Durch die gemeinsame Verwendung wird es möglich, ohne eine Zeile Code, die Trace Spans der einzelnen Service-Aufrufe innerhalb des Istio Service Meshs in OpenZipkin oder Jaeger anzuzeigen. Mal sehen, wie schnell diese Kinder aufwachsen werden und ihren ersten Geburtstag feiern dürfen.

In diesem Sinne:

Happy Birthdays MicroProfile!

Geschrieben von
Michael Hofmann
Michael Hofmann
Michael Hofmann ist freiberuflich als Berater, Coach, Referent und Autor tätig. Seine langjährigen Projekterfahrungen in den Bereichen Softwarearchitektur, Java Enterprise und DevOps hat er im deutschen und internationalen Umfeld gesammelt. Mail: info@hofmann-itconsulting.de
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: