Vert.x

出自Local Chinese Wikipedia
跳至導覽 跳至搜尋
Vert.x
File:Vert.x Logo.svg
原作者Tim Fox
開發者Tim Fox, VMWare, Red Hat, Eclipse基金會
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{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
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統Cross-platform
      平台Java虛擬機
      類型事件驅動 網絡
      許可協議Apache License version 2.0
      網站vertx.io

      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伺服器以高度可擴展的方式提供內容。

      參考[編輯]

      1. Eclipse Vert.x 5 released!. 
      2. vert.x – JVM Polyglot Alternative to Node.js頁面存檔備份,存於互聯網檔案館),Dio Synodinos,2012-05-04,InfoQ

      外部連結[編輯]