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

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