Vert.x. 如何创建一个真正的多语言JVM应用程序?

我正在检查Vert.x ,一个可以用几种不同的JVM语言运行应用程序的框架。

在vertx-examples中有大量的例子可用。

但问题是,(我还没有找到任何东西),我们如何才能以真正的多语言方式编写Vert.x应用程序(同时使用所有支持的JVM语言)?

例如,我们如何编写使用以下文件的代码: Java.javaKotlin.ktJavascript.jsRuby.rb 。 其中每个人都有一个简单的函数,打印语言名称(例如Ruby.rb打印ruby )。

例如,当使用这个输入时:

$vertx run Polyglot.java

我们怎样才能实现以下输出?

java, kotlin, javascript, ruby

编辑 ,我的尝试:

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

但是你可以 :)

就是这样:

  1. 在java中创建一个verticle
  2. 在JS中创建一个垂直
  3. 在Kotlin中创建一个Verticle

现在要么在集群模式下独立运行每个垂直(所以垂直通讯是通过事件总线进行通讯的,这是所有语言的通用抽象),或者创建一个额外的垂直部署所有垂直同一个JVM中的垂直,并再次使用事件总线进行消息驱动开发语言。