Vert.x
![]() | |
原作者 | Tim Fox |
---|---|
開發者 | Tim Fox, VMWare, Red Hat, Eclipse基金會 |
當前版本 |
|
原始碼庫 | |
程式語言 | Java, JavaScript, Apache Groovy, Ruby, Scala, Kotlin, Ceylon, Python, Clojure |
作業系統 | Cross-platform |
平台 | Java虛擬機 |
類型 | 事件驅動 網絡 |
許可協議 | Apache License version 2.0 |
網站 | vertx |
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擁有以下特性:
- 支持多種程式語言。應用程式組件能夠以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
- ^
- ^
- ^
- ^
- ^
- ^
- ^