Jetty 9.3慶祝20周年生日快樂,并增加HTTP/2支持

jopen 9年前發布 | 7K 次閱讀 Jetty
 

今年6月12日,Jetty項目發布了旗艦性開源嵌入式應用服務器的 9.3版 ,同時這一天也是該項目的20周年紀念日。此次發布的主要特性包括增加了對HTTP/2服務端(與客戶端)支持、系統最低要求Java 8,以及更多的NIO集成與完全重構的調度器。此外,該版本還移除了SPDY網絡支持、并修復了自Jetty 9.2.x以來的400多個Bug。

Jetty的主開發者Greg Wilkins撰寫了一篇博文,談到了 Jetty對HTTP/2的支持 。在文章中,他介紹了如何在Jetty啟動命令中輕松啟用HTTP/2支持。

$ java -jar $JETTY_HOME/start.jar --add-to-startd=http2,http2c

上述命令并不會創建或是開啟新的連接器/端口,只是向端口8080與8443的既有連接器上增加了HTTP/2協議。大多數現代瀏覽器的最新版本都提供了對HTTP/2的支持。請訪問 http://caniuse.com/#feat=http2 了解各個瀏覽器對HTTP/2的支持情況。

InfoQ有幸采訪到了Greg Wilkins,請他談談Jetty這20年的發展歷程。

InfoQ:恭喜你,Greg,我敢打賭你從來沒有想到Jetty竟然能發展到今天,20年的歷程。

事實上,我一開始只是將其作為我所開發的一個問題追蹤Web應用中的一個模塊而已,從來沒有想過有人會對它產生興趣。但結果卻是很多人都開始使用Jetty,同時該HTTP服務器也成為了我主要的工作方向(要不我肯定還在開發那個問題追蹤應用,也許后來成為Atlassian也不一定呢【譯者注:Atlassian是知名的協作工具Confluence與JIRA的開發公司】)。

在過去的10到15年間,我期望Web服務器能夠成為像日常用品一樣的東西,無論人們選擇哪個服務器都不會有什么不同。但事實卻并非如此:JVM發生了變化、標準發生了變化、優化服務器的方式發生了變化、開發Web應用的方式也發生了變化。因此,為了適應這些變化,Jetty也總是需要不斷變化,而各個容器的變化則是不同的。

InfoQ:緊跟所有最新的標準與需求如WebSockets和HTTP/2是件非常有挑戰的事情。能否向大家介紹一下你探索并實現這些需求的過程么?

成為JCP與IETF專家組成員讓我們能夠始終走在標準發展的最前沿,我們認為有時我們在引領標準,有時也在跟隨標準。不過,我認為最棒的創新還是來自于真實用戶的真實需求,作為廣泛多樣的開源社區的一部分是尋找到這些需求的關鍵所在:異步Servlets就源自ActiveMQ的一個特性需求;WebSockets之所以能引起我們的注意,原因在于Dojo中的cometd;我們現在正在調研反應式Stream APIs,因為很多用戶對此都非常感興趣。

InfoQ:微服務部署量的持續增加對Jetty的使用產生了何種影響?

Jetty當然也適用于微服務,不過我希望微服務能促進Jetty的發展(在真正的開源項目中這是很難的)。不過到目前為止,微服務并未驅動Jetty發生任何重要的改變,我希望這是因為我們的設計目標是針對簡單的嵌入式用途,而微服務在這個領域中并沒有什么新東西。

InfoQ:在應用服務器市場有很多競爭者,特別是開源領域的Tomcat。那么Jetty是怎樣做到如此成功的呢?

我們并未感受到應用服務器市場的競爭,因為我們并不想與完整的EE,甚至是提供Web Profile的對手競爭。當然了,Jetty可以用于EE部署,不過我們深信面向組件的開發,不理解為何你的HTTP協議提供者應該負責持久化業務 Beans、管理事務或是生成內容。有很多其他組件可以完成這些事情,我們只專注在自己擅長的領域上:為HTTP、HTTP2、WebSocket、 FCGI等提供可伸縮的協議實現,讓用戶為應用的其他部分選擇合適的組件。我們還可以確保的是,我們對其他項目也有很好的把控,因此將CDI、JSF、 JMS、ETC等集成到Jetty中是非常直接且高效的。

如果說有什么區別的話,我們覺得專注在可伸縮的異步微服務的輕量級HTTP服務器是我們真正面對的競爭對手。這個領域有一些創新空間,我們希望能夠支持他們所期望的語義,同時依然提供Servlet API。因此,我們一方面提供了類似的、可伸縮的、靈活的異步HTTP,同時在需要時又提供了對Servlet API的完全訪問。

這種靈活的做法在市場上很有吸引力,看看使用Jetty的那些大公司吧,Google、Yahoo、非死book、Salesforce、LinkedIn等,他們彼此之間的用法都不同,但沒有一家公司像以前那種使用EE的。

InfoQ:計劃何時發布兼容于Servlet 4.0的版本呢?

Jetty 10將會支持Servlet 4.0。不過,我們還不確定4.0中到底會有哪些東西,這個過程將會持續很長時間。因此,現在還沒有具體的時間規劃,到底加入什么特性目前也是不明朗的。

InfoQ:不久的將來,Jetty將會增加哪些特性?

尚不確定。我們有一些想法:反應式流、增強的CDI集成、Websocket over HTTP2、Quic等。我們已經開始著手對其中一些特性進行試驗了,不過還需要真實的用戶需求,接下來才能將這些大概的想法形成計劃。

Webtide 提供了對Jetty的支持。事實上, Professional Services 站點就是個HTTP/2的測試床。

查看英文原文: Jetty 9.3 Celebrates 20th Anniversary, adds HTTP/2 Support

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!