在2015年JavaLand大會上,Ed Burns展現了Java EE Servlet 4.0規範(JSR 369)的概要,演講的重點在於Java EE平臺對HTTP/2的支持。HTTP/2旨在解決現存HTTP規範中的問題,並引入新的功能,包括request/response多路複用、二進制幀傳輸(binary framing)、數據流優先級、服務器推送和頭信息壓縮。html
Burns是Oracle公司的技術顧問之一,他從因爲HTTP/1.1中固有的缺陷,致使當前典型網站的30多種資源傳輸到瀏覽器端很慢這一現象談起。首要的問題是‘對頭阻塞(head-of-line,HOL)’引發的,緣由是被請求的資源必須排隊依次傳輸。爲此,現代瀏覽器會嘗試使用打開多個socket鏈接、域名碎片和文件串聯等技術,做爲臨時解決方案。java
Burns表示,HTTP/2本質上是基於HTTP/1.1的新的傳輸層,是OSI模型中應用層的實現。該協議定義了一樣的request/response模型,並無引入新的方法或者頭信息、應用層上的新的使用模式,也沒有新的URL用法以及底層規範。git
HTTP/1.1幾乎沒有涉及如何使用TCP套接字,TCP包能夠視爲丟棄的資源。相反,新的HTTP/2規範建議把Socket視爲稀缺資源,每臺服務器只開放一條TCP鏈接。 HTTP/2的‘流’本質上是一條TCP鏈接的通道(channel),消息在通道中進行傳送。幀(frame)是HTTP/2通訊的最小單位。github
HTTP/2規範還包括:瀏覽器
Burns討論了已有的對HTTP/2的批評,包括HOL阻塞可能發生在頭信息幀中,Firefox和Chrome不支持非安全傳輸層協議升級、因爲HPACK編碼/解碼過程致使碳足跡(carbon footprint)的增長、因爲必須寫入HTTP/2規範實現中的新軟件的表面面積巨大,致使潛在增長DoS攻擊源,以及HTTP/2實際上與WebSocket是正交等方面內容。緩存
演講最後討論了Java EE Servlet API可能包含的對HTTP/2規範的支持。可能支持的功能包括:request/response多路複用、數據流優先級、服務器端推送,以及對HTTP1.1的升級。安全
數據流優先級會經過新的Priority類實現,而且現有的HttpServletRequest和HttpServletResponse類會增長訪問和修改數據流優先級的方法。Burns還指出,服務器端推送對如JSF這樣的框架會很是有用,它還可以實現經過給定的URL和頭信息,將資源推送到客戶端的能力。服務器
Servlet 4.0規範會把HTTP/2引入 Java EE,並100%兼容實現HTTP/2規範。這將由2014年9月制定的JSR 369來支持,JSR369暫定於2015年第四季度肯定最終草案,預計2016年第三季度最終發佈。oracle
Burns鼓勵全部感興趣的人經過Adopt-a-JSR計劃參與Servlet4.0的建立、經過訪問Java EE參考實現應用服務器GlassFish的網頁,體驗Aquarium blog。JSR369規範的更多相關信息詳見Java Community Process(JCP)網站。JavaLand是在德國布呂爾召開的年度Java大會,詳情參見JavaLand事件網站。框架
查看英文原文:Ed Burns Discusses HTTP/2 and the Java EE Servlet 4 Specification