Neues von der EclipseCon 2022 Jakarta EE 10 im Fokus der Eclipse Foundation

Von Michael Matzer |

Anbieter zum Thema

Auf dem EclipseCon 2022 in Ludwigsburg wurde unter anderem die Entwicklungsumgebung Jakarta EE in Version 10 vorgestellt, die zahlreiche Neuerungen bringt. In zahlreichen Präsentationen wurden weitere Neuheiten vorgestellt und Altbekanntes wie etwa Rust erweitert.

Auf der <a href=https://www.eclipsecon.org/2022/>EclipseCon 2022</a> wurde unter anderem die Entwicklungsumgebung Jakarta EE in  Version 10 vorgestellt.
Auf der EclipseCon 2022 wurde unter anderem die Entwicklungsumgebung Jakarta EE in Version 10 vorgestellt.
(Bild: Eclipse Foundation)

Die Entwicklungsumgebung Jakarta EE soll in Version 10 besonders das Erstellen von kleinen Java-Apps und Microservices erleichtern. Jakarta ist eine der Arbeitsgruppen der Eclipse Foundation, deren quelloffene Entwicklungsplattform schon seit Jahren verbreitet ist. Jakarta EE 10 bringt zahlreiche Neuerungen, die auf der EclipseCon 2022 gezeigt wurden.

Neues Core-Profil

Diese Spezifikationen umfasst Jakarta EE 10.
Diese Spezifikationen umfasst Jakarta EE 10.
(Bild: Eclipse Foundation)

Es gibt eine neue Profilspezifikation, die erste seit einem Jahrzehnt: Das Jakarta EE Core Profile. Zu den Untermengen dieses Kernprofils gehören Spezifikationen für die Entwicklung von Microservices und für die benötigten kleinen Laufzeit-Apps.

Erweiterungen

Mehr als 20 Komponenten-Spezifikationen haben neue Funktionen erhalten, darunter Jakarta Contexts and Dependency Injection (CDI) 4.0. Sie umfasst eine neue „CDI Lite“-Spezifikation, die das Erstellen eines Reflection-losen Programmiermodells ermöglicht. Dieses erlaubt die Kompilierung zu einem jeweils nativen Artefakt, indem es Build-kompatible Erweiterungen bereitstellt.

Die Funktion Jakarta RESTful Web Services 3.1 standardisiert eine Java SE Bootstrap API und unterstützt „multipart/form-dat“. Das Modul Jakarta Security 3.0 unterstützt für die Authentifizierung OpenID Connect, um Entwickler dabei zu unterstützen, moderne Web-basierte Sicherheitsanforderungen zu erfüllen.

Jakarta EE, das ehemalige Java EE für die Fortune1000-Unternehmen, erweitert in Release 10 die Unterstützung für Anmerkungen. Fortan soll es einfacher sein, modulare Apps zu erstellen und es eine engere Integration zwischen Komponenten-APIs gibt

Mike Milinkovich von der Eclipse Foundation schreibt in seinem Blog: „Jakarta EE 10 verleiht Unternehmen die Flexibilität, Java optimal auf ihre jeweilige Weise zu nutzen. Sie können Jakarta EE 10 Apps sowohl auf Java SE 11 wie auch Java SE 17 entwickeln und bereitstellen – das ist der dauerhafteste Support (LTS) eines Releases von Java SE überhaupt. Sie können eine Reihe neuer Leistungsmerkmale nutzen, darunter das modulare System, das in Java SE 9 eingeführt und in Java SE 11 unterstützt worden ist.“

IBM, Red Hat, Payara, Spring sowie die Projekte „Apache Tomcat“, TomEE und Eclipse Jetty haben den Umzug in den Jakarta-Namespace mitgemacht, schreibt Milinkovich, und unterstützten Jakarta weiterhin: „Heute ermöglicht Jakarta EE 10 Microservices-Architekturen und Container.“ Jetty beispielsweise stellt einen Web-Server- und -Servlet-Container bereit, der HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS und viele andere Integrationsmöglichkeiten unterstützt. Auch Eclipse Glassfish, ein Application Server, ist inzwischen als Jakarta-kompatibel zertifiziert. Bei GitHub ist Jakarta EE 10 ebenfalls zu finden.

Eclipse JKube

Marc Nuri von Red Hat stellte Eclipse JKube vor, eine Sammlung von Bibliotheken und Plug-ins, mit denen sich Container-Images für Java-Applikationen erstellen und Kubernetes bereitstellen lassen. Es unterstützt Docker, JIB und S2I. JKube erzeugt und deployed Kubernetes- bzw. OpenShift-Ladelisten (Manifeste) zur Kompilierzeit. „Es bringt eure Java-Applikationen auf Kubernetes und OpenShift”, so Nuri. Am Schluss seines Vortrags stellte er eine Kava-Applikation in Kubernetes als Minikube bereit, indem er das Kubernetes Maven Plugin bzw. das Kubernetes Gradle Plugin verwendete.

Eclipse Kura

Mit Kura AI Wire wird eine Wire-Komponente angeschlossen, um Edge-Device-Daten anzuzapfen. Rechts das Auswahlformular.
Mit Kura AI Wire wird eine Wire-Komponente angeschlossen, um Edge-Device-Daten anzuzapfen. Rechts das Auswahlformular.
(Bild: Eurotech)

Eclipse Kura ist ein Ökosystem, das etliche Komponenten umfasst, mit denen sich in einer Session ein Machine-Learning-basierter Anomalie-Detektor erstellen ließ. Zu Eclipse Kura gehören Kura Wire, um diagnostische Daten von einer Appliance zu sammeln und sie in die Eclipse Kapua Cloud hochzuladen. Um ein ML-Modell mithilfe dieser Trainingsdaten zu erstellen, müssen die Kapua-Daten heruntergeladen und in der bevorzugten ML-Bibliothek, beispielsweise TensorFlow oder Keras, zu einem Modell entwickelt werden.

Die Implementierung eines Kura KI-Modells mit Inferenz kann recht flexibel erfolgen.
Die Implementierung eines Kura KI-Modells mit Inferenz kann recht flexibel erfolgen.
(Bild: Eurotech)

Der nächste Schritt ist, wie immer im Machine Learning, die Inferenz des Modells auf die eingehenden Realdaten, um schon auf der Edge-Appliance Anomalien entdecken zu können. Das Modell wird auf dem Inferenz-Server Nvidia Triton ausgeführt. Um das trainierte Modell auf dem Edge-Gerät bereitzustellen, wird die Schnittstelle von Eclipse Kura Wires verwendet. Damit lässt sich das Modell mithilfe des Inferenz Engine Dienstes von Eclipse Kura ausführen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Die Unterstützung des KI-Toolkits Intel OpenVINO erlaubt Eclipse-Projekten wie Kura den Zugriff auf eine Vielzahl von CPUs, VPUs, FPGAs und GPUs.
Die Unterstützung des KI-Toolkits Intel OpenVINO erlaubt Eclipse-Projekten wie Kura den Zugriff auf eine Vielzahl von CPUs, VPUs, FPGAs und GPUs.
(Bild: Intel)

Diese Case Study von Pierantonio Merlino führte die neuen KI-Features für Edge AI vor: KI-Modell-Verschlüsselung, Support für Inferenzserver wie Nvidia Triton und mehr. Als nächstes sei die Unterstützung für Intels Inferenz-Toolkit Open VINO sowie für Eclipse Deeplearning4j geplant.

Embedded und asynchrones Rust

Eine der Sessions befasste sich mit Neuerungen in der quelloffenen Programmiersprache Rust von der Mozilla Foundation. Weil die Multiparadigmen-Systemprogrammiersprache nahe am Bare Metal arbeite, könne sie die Speichernutzung sowie die Datensicherheit besser kontrollieren, kommentierte Constantin Gonzalez, Principal Solution Architect bei Amazon Web Services Deutschland (AWS). „Rust kombiniert die Effizienz von C mit der Verlässlichkeit höherer Programmiersprachen. Mit Rust – Rost ist nah am Metall – ist der Entwickler nah an der Hardware und kann Code programmieren, der sehr schnell ist.“

„Wir bei AWS haben uns sehr früh bei der Rust Community engagiert“, berichtet Gonzalez. „Viele Kerndienste sind inzwischen in Rust programmiert, so etwa Teile des Amazon-Hypervisors NITRO, die sehr sicherheitskritisch sind. Sie verwenden die erwähnten Sicherheitsfeatures. Zunehmend andere große Teile von AWS sind in Rust implementiert, weil uns das hilft, sicheren Code zu produzieren.“

Rust mache es schwer, fehlerhaften Code zu produzieren, so Gonzalez: „Der Rust Compiler ist so aufgebaut, dass der Entwickler keine Speicherlöcher (Leaks) einbauen kann, weil die Konstrukte in der Programmiersprache das nötige Speichermanagement als Feature schon mitbringen.“

Dieser wichtige Effekt werde schon auf Compilerebene geprüft, so dass der Entwickler ‚gesundes‘ Speichermanagement mitbringt. Damit sei Rust aber auch eine besonders sichere Programmiersprache. „Die meisten Sicherheitslücken entstehen, weil ein Speicherüberlauf dazu führt, dass der Prozessor anfängt, in Speicherbereiche reinzuschreiben, wo er nichts zu suchen hat.“ Die so entstehenden Sicherheitslücken würden von vornherein unterbunden.

Jens Reimann und Ulf Lilleengen von Red Hat demonstrierten den aktuellen Stand der Dinge bei Embedded Rust: asynchron ausgeführter Code, austauschbare TCP/IP-Stapel, Clients für TLS, http und MQTT. Sogar einen Boot Loader und funkgestützte Updates via Bluetooth gebe es jetzt. Als Use Case zeigten sie eine IoT-Anwendung und deren Integration mit Eclipse IoT-Projekten wie Hawkbit.

Serverless Java-Apps für die Cloud

MicroProfile 5.0 wurde im Dezember 2021 erhältlich.
MicroProfile 5.0 wurde im Dezember 2021 erhältlich.
(Bild: Eclipse Foundation)

In seiner Session zeigte Mads Oppenheim dem Publikum, wie sich Serverless Java Apps in der Cloud erstellen lassen, indem man MicroProfile, Quarkus und Google Cloud Run verwendet. Mit MicroProfile könne man sein Projekt zu einem anderen Application Server migrieren, ohne den Quellcode zu ändern.

Quarkus ist ein schneller Application Server. Diese Grafik zeigt seine Leistungsdaten an.
Quarkus ist ein schneller Application Server. Diese Grafik zeigt seine Leistungsdaten an.
(Bild: Eclipse Foundation)

Der App-Server des Beispielprojekts wurde auf Quarkus v.2.13.4 umgestellt, einen „Kubernetes Native Java Stack“, der auf OpenJDK Hotspot und GraalVM zugeschnitten ist. Abschließend wurde die App auf Google Cloud Run bereitgestellt, einem vollständig verwalteten Container Service. Google-Kunden sollen damit skalierbare Containeranwendungen in ihrer bevorzugten Sprache (Go, Python, Java, Node.js, .NET) auf einer vollständig verwalteten serverlosen Plattform erstellen und implementieren können.

(ID:48734206)