Vert.x
- 4.5.9 (2024年7月16日;穩定版本)[1]
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
- github
.com /eclipse /vert .x
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
Eclipse Vert.x 是一个事件驱动的应用程序框架,其支持多种编程语言,并运行于Java虚拟机中。[3][4]
在其他编程语言中,与其类似的有Node.js(适用于JavaScript)、Twisted(适用于Python)、Perl Object Environment(适用于Perl)、libevent(适用于C)、reactPHP(适用于PHP)、amphp(适用于PHP)及EventMachine(适用于Ruby)。
自2.1.4版本始,Vert.x以Java、JavaScript、Groovy、Ruby、Python、Scala、Clojure及Ceylon编程语言公开其API。
自3.6.0版本始,Vert.x以Java、JavaScript、Groovy、Ruby、Scala、Kotlin及Ceylon编程语言公开其API。
历史
2011年,在VMware工作的 Tim Fox 开始开发Vert.x。
Tim Fox 最初将项目命名为“Node.x”,该名称由Node.js的命名衍生而来,其中“x”表示新项目支持多种编程语言,而非仅支持JavaScript。该项目后来改名为“Vert.x”以避免潜在的法律问题,因为“Node”是 Joyent Inc. 拥有的商标[5]。新名称替换了node一词,所使用的vertex一词在数学中同样意为节点。
2012年12月,VMware向已离职的 Tim Fox 发送法律文件,以期从Vert.x社区[6][7]获得Vert.x商标、域名、博客、GitHub帐户及Google Group的控制权。
与其他各方讨论后,2013年1月,VMware同意将项目和相关IP转移到Eclipse基金会这一中立的法律实体中,以使Vert.x社区获得最大收益。 [8]
2013年8月,Core Vert.x 项目完成了向Eclipse基金会的迁移。Vert.x技术栈中的其他项目并未迁移至Eclipse,但因Eclipse基金会的默认而继续使用“Vert.x”商标。
2014年5月,Vert.x在JAX创新奖中荣获“最具创新性的Java技术”奖。 [9]
2016年1月12日,Tim Fox辞去了Vert.x项目的领导职务。[10]长期贡献者Julien Viet取代了他的位置。
架构
Vert.x使用底层I/O库Netty 。 [11]
Vert.x拥有以下特性:
- 支持多种编程语言。应用程序组件能够以Java、JavaScript、Groovy、Ruby、Scala、Kotlin和Ceylon编写。
- 简单的并发模型。所有代码都是单线程的,免除了多线程编程的麻烦。
- 简单的异步编程模型,用于编写真正可扩展的非阻塞应用程序。
- 跨越客户端和服务器端的分布式事件总线。事件总线甚至可以渗透到浏览器中的JavaScript中,从而可以创建所谓的实时Web应用程序。
- 角色模型和公共存储库,用于重用并共享组件。
示例
下列Java代码会实现一个输出“Hello from Vert.x”的服务器:
import io.vertx.core.AbstractVerticle; public class Server extends AbstractVerticle { public void start() { vertx.createHttpServer().requestHandler(req -> { req.response() .putHeader("content-type", "text/plain") .end("Hello from Vert.x!"); }).listen(8080); } }
同一服务器的JavaScript版本如下:
vertx.createHttpServer() .requestHandler(function (req) { req.response() .putHeader("content-type", "text/plain") .end("Hello from Vert.x!"); }).listen(8080);
上述两种代码均可使得Web服务器以高度可扩展的方式提供内容。
参考
- ^ Release 4.5.9. 2024年7月16日 [2024年7月28日].
- ^ Eclipse Vert.x 3.8.5
- ^ Wait, vert.x – JVM Polyglot Alternative to Node.js (页面存档备份,存于互联网档案馆),Dio Synodinos,2012-05-04,InfoQ
- ^ Vert.x – an asynchronous, event-driven Java web framework (页面存档备份,存于互联网档案馆),Eberhard Wolff,2012-06-20,hDeveloper
- ^ https://groups.google.com/d/msg/vertx/lxZGADtT6dQ/a0qzaQpzfroJ
- ^ "VMware's dealings with Vert.x founder should serve as a warning." (页面存档备份,存于互联网档案馆)
- ^ "Who controls Vert.x: Red Hat, VMware, or neither?" (页面存档备份,存于互联网档案馆)
- ^ "Vert.x Joining Eclipse Foundation" (页面存档备份,存于互联网档案馆)
- ^ “Vert.x赢得JAX创新奖” (页面存档备份,存于互联网档案馆)
- ^ https://groups.google.com/forum/?fromgroups#!topic/vertx/yluLHXa5CRU (页面存档备份,存于互联网档案馆)
- ^ vert.x – JVM Polyglot Alternative to Node.js (页面存档备份,存于互联网档案馆),Dio Synodinos,2012-05-04,InfoQ
外部链接
- 官方网站