Vert.x

Vert.x logo
Basisdaten

Entwickler Tim Fox
Aktuelle Version 5.1.2[1]
(8. Juni 2026)
Betriebssystem plattformübergreifend
Programmier­sprache Java, JavaScript, Groovy, Ruby, Ceylon, Kotlin, Scala
Kategorie Framework für reaktive Programmierung
Lizenz Apache-Lizenz
vertx.io

Vert.x ist ein ereignisorientiertes Framework für einfache Nebenläufigkeit, das in der Java Virtual Machine läuft und in den Programmiersprachen Java, JavaScript, Groovy, Ruby, Ceylon, Kotlin und Scala mit Apache-Lizenz verfügbar ist.

Vert.x bietet folgende Funktionen:

  • Polyglot. Anwendungskomponenten können in Java, JavaScript, Groovy, Ruby, Ceylon, Kotlin und Scala geschrieben werden.
  • Einfache Nebenläufigkeit, reaktive Programmierung.
  • Einfaches, asynchrones Programmiermodell für skalierbare, nicht-blockierende Anwendungen.
  • Verteilter Eventbus, der die Clientseite und Serverseite verbindet.
  • Modulsystem und öffentliches Modul-Repository.

Ähnliche Umgebungen für andere Programmiersprachen sind z. B. Node.js für JavaScript, Twisted für Python, Perl Object Environment für Perl, libevent für C und EventMachine für Ruby.

Geschichte

Bearbeiten

Die Arbeit an Vert.x wurde von Tim Fox im Jahr 2011 begonnen, während er Mitarbeiter von VMware war. Im Dezember 2012, nachdem er VMware verließ, beanspruchte VMware die Vert.x Trade Mark, Domain, Blog, GitHub-Account und Google Group. Nach einigen Diskussionen stimmten im Januar 2013 alle Beteiligten dem Wechsel des Projekts zur Eclipse Foundation zu. Der Wechsel zur Eclipse Foundation wurde im August 2013 vollzogen. Im Mai 2014 gewann Vert.x den Award für „Most Innovative Java Technology“ der JAX Innovation Awards.[2]

Beispiele

Bearbeiten

Ein Webserver, der den Text "Hello from Vert.x!" zurückgibt, könnte im JavaScript zum Beispiel so geschrieben werden:

vertx.createHttpServer()
  .requestHandler(function (req) {
    req.response()
      .putHeader("content-type", "text/plain")
      .end("Hello from Vert.x!");
}).listen(8080);

In Java:

import io.vertx.core.AbstractVerticle;
public class Server extends AbstractVerticle {
  public void start() {
    vertx.createHttpServer().requestHandler(req -> {
      req.response()
        .putHeader("content-type", "text/plain")
        .end("Hello from Vert.x!");
    }).listen(8080);
  }
}

In Ruby:

$vertx.create_http_server().request_handler() { |req|
  req.response()
    .put_header("content-type", "text/plain")
    .end("Hello from Vert.x!")
}.listen(8080)

In Groovy:

vertx.createHttpServer().requestHandler({ req ->
  req.response()
    .putHeader("content-type", "text/plain")
    .end("Hello from Vert.x!")
}).listen(8080)

In Python:

import vertx

server = vertx.create_http_server()

@server.request_handler
def handle(req):
    filename = "index.html" if req.uri == "/" else req.uri
    req.response.send_file("webroot/" + filename)
server.listen(8080)

In Clojure:

(ns example.server
  (:require [vertx.http :as http]))

  (-> (http/server)
    (http/on-request
      (fn [req]
        (let [uri (.uri req)]
          (-> req
            (http/server-response)
            (http/send-file (str "webroot/" (if (= "/" uri) "index.html" uri)))))))
    (http/listen 8080))

In Ceylon:

import io.vertx.ceylon.core { ... }
import io.vertx.ceylon.core.http { ... }
shared class Server() extends Verticle() {
  start() => vertx.createHttpServer()
    .requestHandler((req) =>
      req.response()
        .putHeader("content-type", "text/plain")
        .end("Hello from Vert.x!")
    ).listen(8080);
}

Wichtig ist, dass bei diesen Versionen keinerlei Überprüfungen stattfinden, ob beispielsweise die angeforderte Datei im Wurzelverzeichnis liegt.[3]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. Release 5.1.2. 8. Juni 2026 (abgerufen am 9. Juni 2026).
  2. Vert.x wins JAX innovation award. jax.de
  3. In a real production web-server you would want to do some checking of the path to ensure files aren't served from outside the webroot!

📚 Artikel Terkait di Wikipedia

Gestalt Pattern Matching

D_{qr}={\frac {2\cdot {\big |}\{\!\vert S1\vert \!\}\cap \{\!\vert S2\vert \!\}{\big |}}{|S1|+|S2|}}} , # Dqr Implementierung in Python def quick_ratio(s1: str,

Regulärer Ausdruck

{ c } ∗ } {\displaystyle {\mathcal {L}}(\mathrm {regex} )=\{a\varphi \;\vert \;\varphi \in \{b\}^{*}\cup \{c\}^{*}\}} Die Sprache aller Wörter, die mit

Lisp

Dialekt. NewLISP ist eine Skriptsprache Hy ist ein Lisp-Dialekt, der eng mit Python verzahnt ist. lfe ist ein Lisp-Dialekt für die Erlang VM John McCarthy:

Gleitkommazahl

Fehler, lautet eine mögliche Formulierung | x − y | ≤ ε {\displaystyle \vert x-y\vert \leq \varepsilon } . Toleriert man beim Vergleich einen relativen Fehler

Kalman-Filter

{{\boldsymbol {F}}_{k}}=\left.{\frac {\partial f}{\partial {\boldsymbol {x}}}}\right\vert _{{\hat {\boldsymbol {x}}}_{k-1|k-1},{\boldsymbol {u}}_{k}}} H k = ∂ h ∂

Liste von Fabelwesen

verbrennt am Ende seines Lebens und ersteht aus seiner Asche wieder neu Python – Drache in der griechischen Mythologie, der das Orakel von Delphi bewachte

Thor

Auseinandersetzung mit der Midgardschlange, bei den Griechen kämpft Apollon mit Python und Herakles mit Hydra, in der hethitischen Mythologie Tarhunna mit der

Liste von Pkw-Marken

Archive) (französisch) Putz (portugiesisch, abgerufen am 30. Oktober 2016) Python (englisch, abgerufen am 24. Dezember 2016) Qasedak-e-Nasir (englisch, abgerufen