Vert.x

来自Local Chinese Wikipedia
imported>Mhss2026年1月30日 (五) 19:29的版本 top
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

页面Module:Hatnote/styles.css没有内容。

页面Module:Infobox/styles.css没有内容。

Vert.x
File:Vert.x Logo.svg
原作者Tim Fox
开发者Tim Fox, VMWare, Red Hat, Eclipse基金会
当前版本Template:Software version
源代码库页面Template:Plainlist/styles.css没有内容。
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
编程语言Java, JavaScript, Apache Groovy, Ruby, Scala, Kotlin, Ceylon, Python, Clojure
引擎页面Template:Plainlist/styles.css没有内容。
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统Cross-platform
    平台Java虚拟机
    类型事件驱动 网络
    许可协议Apache License version 2.0
    网站vertx.io
    页面Module:Infobox/styles.css没有内容。

    Eclipse Vert.x 是一个事件驱动的应用程序框架,其支持多种编程语言,并运行于Java虚拟机中。[2][3]

    在其他编程语言中,与其类似的有Node.js(适用于JavaScript)、Twisted(适用于Python)、Perl Object Environment(适用于Perl)、libevent(适用于C)、reactPHP(适用于PHP)、amphp(适用于PHP)及EventMachine(适用于Ruby)。

    自2.1.4版本始,Vert.x以JavaJavaScriptGroovyRubyPythonScalaClojureCeylon编程语言公开其API。

    自3.6.0版本始,Vert.x以JavaJavaScriptGroovyRubyScalaKotlinCeylon编程语言公开其API。

    历史[编辑]

    2011年,在VMware工作的 Tim Fox 开始开发Vert.x。

    Tim Fox 最初将项目命名为“Node.x”,该名称由Node.js的命名衍生而来,其中“x”表示新项目支持多种编程语言,而非仅支持JavaScript。该项目后来改名为“Vert.x”以避免潜在的法律问题,因为“Node”是 Joyent Inc. 拥有的商标[4]。新名称替换了node一词,所使用的vertex一词在数学中同样意为节点。

    2012年12月,VMware向已离职的 Tim Fox 发送法律文件,以期从Vert.x社区[5][6]获得Vert.x商标、域名、博客、GitHub帐户及Google Group的控制权。

    与其他各方讨论后,2013年1月,VMware同意将项目和相关IP转移到Eclipse基金会这一中立的法律实体中,以使Vert.x社区获得最大收益。 [7]

    2013年8月,Core Vert.x 项目完成了向Eclipse基金会的迁移。Vert.x技术栈中的其他项目并未迁移至Eclipse,但因Eclipse基金会的默认而继续使用“Vert.x”商标。

    2014年5月,Vert.x在JAX创新奖中荣获“最具创新性的Java技术”奖。 [8]

    2016年1月12日,Tim Fox辞去了Vert.x项目的领导职务。[9]长期贡献者Julien Viet取代了他的位置。

    架构[编辑]

    Vert.x使用底层I/O库Netty[10]

    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服务器以高度可扩展的方式提供内容。

    参考[编辑]

    外部链接[编辑]