我正在检查Vert.x,这是一个可以用几种不同的JVM语言运行应用程序的框架。
vertx-examples提供了大量示例。
但问题是,(我还没有找到任何东西)我们如何在真正的多语言方式上编写Vert.x应用程序(同时使用所有支持的JVM语言)?
例如,我们如何编写使用以下文件的代码:
Kotlin.kt
,Javascript.js
,Ruby.rb
,ruby
。
其中每个都有一个简单的函数来打印语言名称(例如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}}
答案 0 :(得分:1)
但你可以:)
以下是:
现在要么在群集模式下独立运行每个Verticle(所以Verticle通过事件总线进行通信,这是所有语言的通用抽象),或者创建一个额外的Verticle,在同一个JVM中部署所有Verticle并再次使用eventbus来做消息推动各种语言的发展。