Vert.x. 如何创建一个真正的多语言JVM应用程序?
我正在检查Vert.x ,一个可以用几种不同的JVM语言运行应用程序的框架。
在vertx-examples中有大量的例子可用。
但问题是,(我还没有找到任何东西),我们如何才能以真正的多语言方式编写Vert.x应用程序(同时使用所有支持的JVM语言)?
例如,我们如何编写使用以下文件的代码: Java.java
, Kotlin.kt
, Javascript.js
, Ruby.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
但是你可以 :)
就是这样:
- 在java中创建一个verticle
- 在JS中创建一个垂直
- 在Kotlin中创建一个Verticle
现在要么在集群模式下独立运行每个垂直(所以垂直通讯是通过事件总线进行通讯的,这是所有语言的通用抽象),或者创建一个额外的垂直部署所有垂直同一个JVM中的垂直,并再次使用事件总线进行消息驱动开发语言。