主流java的web容器,主要是Tomcat, jboss, jetty, resin。由于以前我們主要用的是jboss4.0.5,但jbosse用的servlet容器是tomcat5.5,所以只進行tomcat和 jetty的比較,兩個誰好誰壞,適合你用,你才知道。resin就不說了,好像已經(jīng)成為了history.
一、Tomcat
現(xiàn)在Tomcat版本已經(jīng)是8.0了,在Tomcat6和7都增加了很多新的特性。
?
版本 特性
二、jetty
由于jetty出生不好,不像tomcat是在apache強大的基金下面成長,所以變化很多。現(xiàn)在歸于eclipse基金組織下,官方文檔沒有 tomcat那么細和明確。現(xiàn)在Jetty的最新版本是8.0.4,在我們這期使用的是jetty7.2.0,這兩個版本系列與jetty6區(qū)別比較大。詳細的學習了解及性能,在以后的分享再給出。
三、比較
名稱 | 上手度 | 性能 | 更新頻率 | 擴展性 |
Tomcat | 容易 | 從Tomcat6支持nio,性能優(yōu)秀 | 普通 | 不好 |
Jetty | 比較慢。靈活性同時帶來一定的復雜度 | 默認是NIO,性能優(yōu)秀 | 快 | 好 |
?
綜上所述,其實我們選用jetty或者tomcat并不是因為jetty一定比tomcat好,而是因為什么手順,用什么。
四、NIO和BIO對比
測試環(huán)境:
Tomcat: 7.0.22 JDK:1.6.0_11 系統(tǒng):linux,就是我們的開發(fā)機 場景:訪問一個簡單的jsp頁面,沒有什么業(yè)務代碼,純測試及處理request的性能與并發(fā)。 總的說來,BIO下,較為穩(wěn)定,而NIO波動較大。但在10240并發(fā)下,bio徹底玩完,而NIO依然堅挺。所以在大并發(fā)下,NIO是不二選擇。
Tomcat的NIO和BIO配置及運行時截圖
名稱 | 配置 | 運行時 |
BIO | ||
NIO |
五、為什么要用jetty?
其實這篇分享,主要是想說明三點。
- 在web容器上,我們要與時俱進,不能只追求現(xiàn)在,在高并發(fā)下,我們要有相關的經(jīng)驗及應對措施。
- NIO要優(yōu)于BIO,而jetty同時也是推薦用NIO
- jetty的靈活小巧,加載速度快,方便調試等都是促使我們去選擇 tomcat公司很多不屑于用一樣,其實tomcat還是很不錯的。用tomcat支持并發(fā)2000的,也是經(jīng)常干的事。之所以選擇jetty,那原因就不多說了,jboss不給力而且又大,tomcat公司不支持,所以jetty就這樣成為項目中的不二選擇,當然他也是非常優(yōu)秀的產(chǎn)品。 綜上所述,在性能上tomcat與jetty差距并不大,可以說沒有。只是jetty相對來說由于其靈活性,插件化,導致jetty某些場合(如虛擬機、嵌入式)更節(jié)約資源,當然對于我們現(xiàn)在的應用可以忽略這個因素。還是多關注一下我們的SQL語句和業(yè)務邏輯代碼吧!
補充
3.1 Servlet3.0新特性
- 異步處理支持:有了該特性,Servlet 線程不再需要一直阻塞,直到業(yè)務處理完畢才能再輸出響應,最后才結束該 Servlet 線程。在接收到請求之后,Servlet 線程可以將耗時的操作委派給另一個線程來完成,自己在不生成響應的情況下返回至容器。針對業(yè)務處理較耗時的情況,這將大大減少服務器資源的占用,并且提高并發(fā)處理速度。
- 新增的注解支持:該版本新增了若干注解,用于簡化 Servlet、過濾器(Filter)和監(jiān)聽器(Listener)的聲明,這使得 web.xml 部署描述文件從該版本開始不再是必選的了。
- 可插性支持:熟悉 Struts2 的開發(fā)者一定會對其通過插件的方式與包括 Spring 在內的各種常用框架的整合特性記憶猶新。將相應的插件封裝成 JAR 包并放在類路徑下,Struts2 運行時便能自動加載這些插件。現(xiàn)在 Servlet 3.0 提供了類似的特性,開發(fā)者可以通過插件的方式很方便的擴充已有 Web 應用的功能,而不需要修改原有的應用。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
