Eclipse Vert.x 3.5 bietet Java 9, RxJava 2 und OpenAPI-Anbindung

Das Anwendungsframework zum Erstellen reaktiver Anwendungen mit JVM-Sprachen lässt sich mit Java 9 verwenden und bietet dabei HTTP/2. Außerdem können Kotlin-Entwickler Koroutinen verwenden, und es gibt einen Event-getriebenen JSON Parser.

In Pocket speichern vorlesen Druckansicht
Eclipse Vert.x 3.5 unterstützt Java 9, RxJava 2 und OpenAPI
Lesezeit: 3 Min.

Passend zur EclipseCon, die vom 24. bis 26. Oktober in Ludwigsburg stattfindet, hat das Vert.x-Team Version 3.5 des Toolkits zum Erstellen reaktiver Anwendungen auf der JVM (Java Virtual Machine) veröffentlicht. Hinsichtlich Java 9 bietet es zwar noch keine zusätzlichen Funktionen im Framework, aber Entwickler bekommen damit unter anderem HTTP/2. Die Tests des Vert.x-Stacks mit Java 9 haben wohl ergeben, dass der Großteil der Komponenten funktioniert. Eine wesentliche Ausnahme stellt Groovy dar. Eine Tabelle gibt eine Übersicht über das Zusammenspiel; demnach gibt es unter anderem noch Hürden bei der Verwendung mit Ceylon und dem Kafka-Modul.

Eclipse Vert.x setzt nun auf Version 2.0 von RxJava, der JVM-Implementation der Reactive Extensions. Das Framework unterstützt alle neuen Typen, darunter Flowable als Ergänzung zu Observable. Der Unterschied ist, dass Subscriber beim neuen Typ den Datenfluss kontrollieren können. Außerdem kennt Vert.x nun die Basistypen Single, Completable und Maybe.

Seit der im Frühjahr veröffentlichten Version 3.4 hat Vert.x mit MQTT eins der wichtigsten Protokolle im Internet der Dinge an Bord. Allerdings kannte es zunächst nur MQTT-Server. Vert.x 3.5 führt nun auch die zugehörigen MQTT-Clients ein. Das Team hat ein paar Beispiele auf GitHub veröffentlicht, die beim Einstieg in die IoT-Programmierung (Internet of Things) mit MQTT auf Vert.x helfen sollen.

Ebenfalls seit Version 3.4 arbeitet Vert.x mit Kotlin zusammen. Das aktuelle Release erlaubt nun auch den Einsatz von Koroutinen, die in der seit März verfügbaren und nach wie vor aktuellen Kotlin-Version 1.1 noch als experimentell gekennzeichnet sind. In Vert.x lassen sich so asynchrone Operationen auf die gleiche Art mit try-catch-finally-Blöcken behandeln wie sequenzielle, wie folgendes Beispiel aus dem Vert.x-Blog zeigt:

val movie = ctx.pathParam("id")
val rating = Integer.parseInt(ctx.queryParam("getRating")[0])
val connection = awaitResult<SQLConnection> { client.getConnection(it) }
try {
val result = awaitResult<ResultSet> {
connection.queryWithParams("SELECT TITLE FROM MOVIE WHERE ID=?",
json { array(movie) }, it) }
if (result.rows.size == 1) {
awaitResult<UpdateResult> {
connection.updateWithParams("INSERT INTO RATING (VALUE, MOVIE_ID) VALUES ?, ?",
json { array(rating, movie) }, it) }
ctx.response().setStatusCode(200).end()
} else {
ctx.response().setStatusCode(404).end()
}
} finally {
connection.close()
}

Neu ist zudem der Event-getriebene JSON Parser, der besonders auf das Lesen großer JSON-Strukturen ausgelegt ist, da er nicht die kompletten Inhalte zwischenspeichern muss. Mit der Anbindung an OpenAPI-Router entkoppelt das Framework die Überprüfung von Aufrufen auf ihre Korrektheit und die Einbindung eventueller Security-Handler.

Weitere Details lassen sich dem Blogbeitrag entnehmen. Die vollständige Liste der Neuerungen steht in den Release Notes. Eclipse Vert.x ist auf der Downloadseite in einer minimalen und einer vollständigen Distribution mit allen Paketen verfügbar. (rme)