Vert.x. ¿Cómo crear una aplicación de JVM políglota real?

Estoy inspeccionando Vert.x , un marco que puede ejecutar una aplicación en varios lenguajes JVM diferentes.

Hay una gran cantidad de ejemplos disponibles en vertx-examples .

Pero el problema es que (y todavía no encontré nada) ¿cómo podríamos escribir una aplicación Vert.x en una forma políglota real (usando todos los lenguajes JVM compatibles al mismo time)?

Por ejemplo, ¿cómo podemos escribir un código que utiliza los siguientes files: Java.java , Kotlin.kt , Javascript.js , Ruby.rb Donde cada uno tiene una function simple dentro de él que imprime el nombre del idioma (por ejemplo, Ruby.rb imprime ruby ).

Por ejemplo, al usar esta input:

$vertx run Polyglot.java

¿cómo podemos lograr la siguiente salida?

java, kotlin, javascript, ruby

Editar , mi bash:

Polyglot.java

 import io.vertx.core.AbstractVerticle; import io.vertx.core.Launcher; import java.lang.management.ManagementFactory; public class Polyglot extends AbstractVerticle { public static void main(args: String[]) { Launcher.main(new String[] { "run", Polyglot.class.getName(), "-ha"}); } @Override public void start() { vertx.createHttpServer().requestHandler(req -> { final String name = ManagementFactory.getRuntimeMXBean().getName(); req.response().end( Java.message() + Kotlin.message() ); }).listen(8080); } } 

Java.java

 public class Java { public static String message() { return "Java\n"; } } 

Kotlin.kt

 class Kotlin { companion object { fun message() { return "Kotlin\n" } } } 

vertx run Polyglot.java

Pero puedes 🙂

Así es cómo:

  1. Crea un vértice en java
  2. Crea un vértice en JS
  3. Crea un vértice en Kotlin

Ahora ejecute cada vértice de forma independiente con el modo de clúster activado (para que los vértices se comuniquen sobre el eventbus, que es una abstracción común en todos los idiomas) o cree un vértice extra que deployment todos los vertículos en la misma JVM y use el eventbus para desarrollar los posts idiomas.

  • Sirve favicon.ico y otros files estáticos con VertX
  • ¿Cómo comstackr y usar el código de Kotlin en time de ejecución?
  • El depurador Intellij IDEA no funciona en el proyecto Gradle Vert.X
  • Enrutamiento de contenido estático en VertX
  • "La respuesta ya se ha escrito" con Vertx
  • Verticle (s) de Vert.x configuration JSON / YAML (preferible por entorno)
  • Controlador de respuesta de coincidencia con request en VertX