Apache Tomcat 8RC1版于前幾日釋出。它 經過了2年的開發,引入了很多新特征,由于目前還隻是Alpha版,故不推薦在産品中使用。但是我們應該了解它有哪些新特性,以便在穩定版出來後,用到我們的開發項目中去。
Apache Tomcat 8支援Java EE 7規範,包括Java Servlet 3.1、JSP 2.3、Java統一表達式語言EL 3.0等。
我們可以來看看Tomcat最近幾個版本分别支援的JavaEE規範。
------------------------
Tomcat 6: Servlet 2.5、JSP 2.1、EL 2.1
Tomcat7: Servlet 3.0、JSP 2.2、EL 2.2
Tomcat8: Servlet 3.1、JSP 2.3、EL 3.0
除此以外,Tomcat 8還支援像Java WebSocket 1.0這樣的新規範。
Servlet 3.1最大的改進是實作了非阻塞式的I/O通信。這使得性能得到巨大的改進,資料可以通過ReadListener和WriteListener接口以異步的方式進行管理。
Servlet 3.1的第二大改進是HTTP協定的更新。它允許用戶端指定雙方通信所使用的協定。比如說,伺服器和用戶端原本使用HTTP通信協定,能夠更新成WebSockets通信。
JSP 2.3相比2.2版本,并沒有增加什麼新功能或新特性,主要是維護和清理。
EL 3.0較之前的版本有很大的改進和增強。主要有:
1)EL可以以"獨立模式"的方式運作,即運作于Servlets和JSP頁面之外。
簡而言之,此增強可以使用ELProcessor類在Servlet容器内或容器外進行直接調用。
2)EL表達式還支援Lambda表達式,這一點與Java 8相似,這些表達式可以簡化代碼。
表達式包括:參數集、Lambda操作符、函數體。
3)集合操作符允許構造Set、List和Map等集合類型。
4)Java EL流式API包含了forEach、reduce、filter、map等過濾器。
這裡可以獲得集合或清單List,調用字元串夫婦,或者在清單List運作外部的過濾器或聚合函數。比如,你可以對字元串求和。
5)通過EL上下文的導入,開發者能夠直接通路任何類的靜态字段和方法。
Tomcat 8正式支援WebSocket 1.0這個标準的API。盡管Tomcat 7也提供了支援,但是它隻是部分支援,因為在Tomcat 7的時代,标準還未正式制定。目前,大多數網站還以半雙工模式運作HTTP通信,這意味着通信在兩端都可能發生,但是在同一時間點,隻能有1個方向的通信。這有點像對講機。
WebSockets協定是一個全雙工協定,它意味着在同一時間點,通信是雙向傳輸資料的。WebSockets也是HTML5的規範之一。
Tomcat 8最大的變化是資源Resource。Tomcat 8的資源進行了重構,可以更好地支援外部資源。原先的别名Aliases、VirtualLoader、VirtualDirContext、JAR資源和外部倉庫等,現在都以單個的、一緻的方法進行配置。這個新的資源的實作也可以用于主WAR包,并作為其它多個Web應用程式的基礎。
此外,還有對SPDY協定的支援,這裡還有些争議,因為SPDY還不夠完善。
最後,Tomcat 8還有些安全方面的增強,主要是SSL加密提供了額外的診斷資訊。