Neues aus dem Land der Sonnenfinsternis

Eclipse Weekly: Was ist Eclipse Ditto sowie neue Versionen von Vert.x und MQTT.fx

Dominik Mohilo

© Shutterstock.com / solarseven

In den letzten Wochen ging es bei der Eclipse Foundation gefühlt ausschließlich um Java EE (Jakarta EE / Enterprise Profile) bzw. EE4J. Diese Woche war es in diesem Bereich eher still, trotzdem gibt es einige interessante Dinge zu berichten: So wurden neue Versionen von Vert.x und MQTT.fx veröffentlicht und es gab ein virtuelles IoT Meetup zu Eclipse Ditto.

Eclipse Vert.x 3.5.1 veröffentlicht

Im Oktober letzten Jahres hat das ereignisorientierte Webframework Vert.x mit Version 3.5.0 einen neuen Meilenstein erreicht. Ein wichtiges Feature damals war die Unterstützung von Kotlin-Koroutinen, die es Entwicklern erlauben, mit asynchronen Abläufen gleichermaßen umzugehen, wie mit sequentiellen. Der Vorteil: Es ist möglich, try, catch und finally zu nutzen. Das Major brachte zudem einen MQTT-Client, nachdem in Version 3.4 bereits der MQTT-Server implementiert wurde, und die Unterstützung für Java 9.

JUnit 5

In Vert.x 3.5.1 wird nun auch JUnit 5 unterstützt, mit dem sich zum Beispiel verschachtelte („nested“) und parametrisierte Tests erstellen lassen – letztere sogar basierend auf CSV-Daten. Das Testing-Framework für Java gibt Entwicklern unter anderem auch die Möglichkeit an die Hand, lesbare Beschreibungen (inklusive Emojis 😉 ) in Tests einzubetten.

Wie gut Vert.x und JUnit 5 zusammenpassen zeigt ein Beispiel. Nehmen wir an, wir hätten ein Verticle mit dem Namen SampleVerticle, das einen HTTP-Server auf Port 11981 zugänglich macht. Mit dem folgenden Test können wir die Deployments des Verticles und die Ergebnisse von 10 aufeinanderfolgenden HTTP-Requests testen:

@Test
@DisplayName("🚀 Deploy a HTTP service verticle and make 10 requests")
void useSampleVerticle(Vertx vertx, VertxTestContext testContext) {
  WebClient webClient = WebClient.create(vertx);
  Checkpoint deploymentCheckpoint = testContext.checkpoint();

  Checkpoint requestCheckpoint = testContext.checkpoint(10);
  vertx.deployVerticle(new SampleVerticle(), testContext.succeeding(id -> {
    deploymentCheckpoint.flag();

    for (int i = 0; i < 10; i++) {
      webClient.get(11981, "localhost", "/")
        .as(BodyCodec.string())
        .send(testContext.succeeding(resp -> {
          testContext.verify(() -> {
            assertThat(resp.statusCode()).isEqualTo(200);
            assertThat(resp.body()).contains("Yo!");
            requestCheckpoint.flag();
          });
        }));
    }
  }));
}

Die Test-Method profitiert unter anderem vom funktionierenden Vertx-Kontext und dem VertxTestContext für die asynchronen Abläufe und ist erfolgreich, wenn alle Checkpoints geflaggt wurden.

Web API Contracts

Die Methods createRouterFactoreFromFile() und createRouterFactoryFromURL() wurden in Vert.x 3.5.1 durch die Methode OpenAPI3RouterFactory.create() ersetzt. Der Grund für den Wechsel ist die Tatsache, dass die neue Methode relative sowie absolute Pfade akzeptiert. Außerdem unterstützt die Methode lokale URLs (per file://) und Remote URLs (per http://).

Das ab sofort verfügbare neue Objekt RouterFactoryOptions beinhaltet sämtliche Einstellungen, die das Verhalten von OpenAPI3RouterFactory während der Router-Erstellung betreffen. So kann man etwa einstellen, ob man einen ResponseContentTypeHandler automatisch einbauen möchte.

Weitere Informationen zu Vert.x 3.5.1 gibt es auf dem Blog des Projekts. Auf GitHub finden sich die vollständigen Release Notes und die Breaking Changes.

MQTT.fx 1.6 ist da

Und noch ein Projekt hat ein Update erfahren: MQTT.fx ist in Version 1.6 erschienen. MQTT.fx setzt auf Eclipse Paho auf, welches Client-Implementierungen der Protokolle MQTT und MQTT-SN bereitstellt. Das Ganze ist natürlich Open Source und kostenfrei, außerdem ist der Client in Java geschrieben.

Das wichtigste Merkmal des MQTT-Clients MQTT.fx ist mit Sicherheit die Unterstützung für Google Cloud IoT Core. Googles Service beinhaltet eine MQTT Bridge, die als Gateway zur Pub/Sub-Instanz in der Google Cloud fungiert. Ein vollständiger MQTT Broker wird von Google nicht gehostet, mit MQTT.fx können daher verschiedene Verbindungsprofile in MQTT-Broker- oder Google-Cloud-IoT-Profile umgewandelt werden. Diesen können Nutzer dann alle benötigten Parameter für die Verbindung zur und die Kommunikation mit der Google MQTT / PubSub Bridge mitgeben.

Google IoT Profile in MQTT.fx / Quelle: Jens Deters

Ansonsten wurden mit MQTT.fx 1.6 einige Bugs gefixt. Der Topic Collector findet nun auch Topics, die mit einem Slash (/) beginnen und die Liste der vom Collector gesammelten Topics ist jetzt in natürlicher Reihenfolge sortiert.

Auf Java Code Geeks hat Jens Deters, Erschaffer von MQTT.fx, einen Artikel zur aktuellen Version geschrieben, herunterladen kann man sich den Client auf der offiziellen Homepage des Projekts.

Virtual IoT Session: Eclipse Ditto

Um Anwendungen für das Internet der Dinge möglichst effektiv entwickeln zu können, müssen sich Coder oft mit sehr vielen, insbesondere auch Hardware-basierten Themen befassen. Zu diesem Zweck werden unter anderem Digital Twins eingesetzt, die quasi alle Eigenschaften eines Gerätes inklusive der digitalen Repräsentation widerspiegeln.

Das Projekt Eclipse Ditto ist seit einem Jahr fester Bestandteil des IoT-Universums der Eclipse Foundation. Ditto sorgt dafür, dass von Geräten aus ein ressourcenbasiertes API zugänglich wird, durch das mit den verbundenen Geräten interagiert werden kann. Durch diese Abstraktion und die Tatsache, dass Ditto dafür sorgt, dass nur berechtigte Personen Zugriff auf die Geräte haben, werden diese quasi in Services umgewandelt. Diese Services haben ein gehostetes, immer verfügbares und zugängliches API, wodurch sie wie andere Services innerhalb der Anwendung angesprochen und genutzt werden können. Das nennt man bei Eclipse Ditto auch Device-as-a-Service (DaaS).

Im folgenden Virtual IoT Meetup erklärt Thomas Jäckle (Bosch SI), was Digitale Twins genau sind, was man sich im Kontext von Ditto darunter vorstellen muss und wie Eclipse Ditto im Detail funktioniert. Teil des Talks ist zudem eine Live-Demo.

Alle Informationen zu Eclipse Ditto können auf der Projektseite auf der Homepage der Eclipse Foundation und der offiziellen Webpräsenz des Projektes gefunden werden.

@EclipseJavaIDE: Tipp der Woche

Der Eclipse-Tipp der Woche wird in Zusammenarbeit mit Sopot Cela präsentiert, der unter dem Handle @EclipseJavaIDE Tag für Tag wertvolle Tipps und Tricks für die Nutzer der Eclipe IDE veröffentlicht.

Kaum eine Community ist aktiver und innovativer als die der Eclipse IDE. JAXenter hat das Ohr am Puls der Entwicklungsumgebung und berichtet wöchentlich über die neuesten Entwicklungen und die spannendsten Geschichten rund um Eclipse.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.