大噶好,最近关注了一个叫Vert.x的东西
简单的说这是一个事件驱动的NIO框架,底层基于Netty。(这里我要上个测评)在 Web框架性能测试Round16中的各项指标表现还是很不错的,说Vertx是框架其实也不是很精确,应该说是个Toolkit。打开官网我们可以看到Vertx中所有的模块
这些模块可以无缝接入你的Java程序中组合成各种功能,Vertx官方也在文档中多次告诉开发者
那么如果我不写Java呢,
我就是喜欢写一些10天就发明出来还为了蹭热度加了一个前缀的语言呢?
完全O那啥K,让我们看一下Vertx另一个特点:
是的,这是一个封装的比较高级的Toolkit,目前支持了7种语言。当你使用Vertx的时候,这7种语言写的应用之间可以无缝对接传递数据。个人感觉作为后端开发的话跟JVM生态融合的很好了,点开任何一个模块都可以看到:
当然Vertx还有很多优秀的地方我就不一一介绍了,同学们闲下来可以去官网看看自己探索一下。初见的话我们来写一个简单的HttpServer体验一下。
首先我们在工程中引入web模块,我这里用的是Maven工程:
然后我们新建一个类,在Vert.x中我们要使用Vertx实例的createHttpServer方法创建一个HttpServer对象:
"然后是不是监听个端口就完事了?"... 是的。不过我们再加一个路由吧这样显得工作量比较饱满
创建Router对象之后我们接受get请求,然后传入一个匿名函数作为handler来处理这个请求(快把你电脑里的Jdk6卸载了),context创建一个response然后写一下报头的参数,之后调用end方法返回一个字符串。这个地方也可以用write方法写返回数据,但是需要写Content-Length参数指定长度,而end方法会自己计算长度,我们这里为了方便就用end了。接下来我们在HttpServer对象调用requestHandler传入刚才的路由(Jdk6卸载完了吗),然后监听一个端口就ok啦。跑main方法然后我们来看看用起来怎么样,这里我们使用postman这个工具来测试get请求:
到这里一个朴素的httpserver就完成了,interesting!
自己研究了这一段时间感觉Vert.x有种解放生产力的感觉?多语言范式的设计也相对超前一些,跟openjdk在做的GraalVM理念比较吻合,估计以后就可以某种程度上解决你们程序员最喜爱的争论语言环节。然而目前中文社区的力量太小了,不过搞CS基本还是英语看一手资料吧。关于Vert.x还有很多好玩的东西有待探索比如eventLoop、RxJava以及类Akka actor-model的Verticle等等等我再踩坑一段时间总结出来吧。