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

时间:2017-10-14 00:49:33

标签: java ruby jvm kotlin vert.x

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

vertx-examples提供了大量示例。

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

例如,我们如何编写使用以下文件的代码: Kotlin.ktJavascript.jsRuby.rbruby。 其中每个都有一个简单的函数来打印语言名称(例如Ruby.rb打印$vertx run Polyglot.java)。

例如,使用此输入时:

java, kotlin, javascript, ruby

我们如何实现以下输出?

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); } }

编辑,我的尝试:

Polyglot.java

public class Java {

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

Java.java

class Kotlin {

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

Kotlin.kt

vertx run Polyglot.java

{{1}}

1 个答案:

答案 0 :(得分:1)

但你可以:)

以下是:

  1. 在java中创建一个Verticle
  2. 在JS中创建一个Verticle
  3. 在Kotlin中创建一个Verticle
  4. 现在要么在群集模式下独立运行每个Verticle(所以Verticle通过事件总线进行通信,这是所有语言的通用抽象),或者创建一个额外的Verticle,在同一个JVM中部署所有Verticle并再次使用eventbus来做消息推动各种语言的发展。