Jetty官方最新版是一個(gè)專(zhuān)業(yè)開(kāi)源的servlet容器。Jetty官方版是嵌入式服務(wù)器,用戶如果在應(yīng)用中加入 Jetty的 Jar文件,則應(yīng)用可在代碼中對(duì)外提供 Web 服務(wù)。Jetty軟件是采用Java語(yǔ)言編寫(xiě)而來(lái),支持為一些獨(dú)立運(yùn)行(stand-alone)的Java應(yīng)用提供網(wǎng)絡(luò)和web連接。
Jetty特色:
易用性
易用性是 Jetty 設(shè)計(jì)的基本原則,易用性主要體現(xiàn)在以下幾個(gè)方面:
通過(guò) XML 或者 API 來(lái)對(duì)Jetty進(jìn)行配置;默認(rèn)配置可以滿足大部分的需求;將 Jetty 嵌入到應(yīng)用程序當(dāng)中只需要非常少的代碼;
可擴(kuò)展性
在使用了 Ajax 的 Web 2.0 的應(yīng)用程序中,每個(gè)連接需要保持更長(zhǎng)的時(shí)間,這樣線程和內(nèi)存的消耗量會(huì)急劇的增加。這就使得我們擔(dān)心整個(gè)程序會(huì)因?yàn)閱蝹€(gè)組件陷入瓶頸而影響整個(gè)程序的性能。但是有了 Jetty:
即使在有大量服務(wù)請(qǐng)求的情況下,系統(tǒng)的性能也能保持在一個(gè)可以接受的狀態(tài)。利用 Continuation 機(jī)制來(lái)處理大量的用戶請(qǐng)求以及時(shí)間比較長(zhǎng)的連接。 另外 Jetty 設(shè)計(jì)了非常良好的接口,因此在 Jetty 的某種實(shí)現(xiàn)無(wú)法滿足用戶的需要時(shí),用戶可以非常方便地對(duì) Jetty 的某些實(shí)現(xiàn)進(jìn)行修改,使得 Jetty 適用于特殊的應(yīng)用程序的需求。
易嵌入性
Jetty 設(shè)計(jì)之初就是作為一個(gè)優(yōu)秀的組件來(lái)設(shè)計(jì)的,這也就意味著 Jetty 可以非常容易的嵌入到應(yīng)用程序當(dāng)中而不需要程序?yàn)榱耸褂?Jetty 做修改。從某種程度上,你也可以把 Jetty 理解為一個(gè)嵌入式的Web服務(wù)器。
Jetty 可以作為嵌入式服務(wù)器使用,Jetty的運(yùn)行速度較快,而且是輕量級(jí)的,可以在Java中可以從test case中控制其運(yùn)行。從而可以使自動(dòng)化測(cè)試不再依賴外部環(huán)境,順利實(shí)現(xiàn)自動(dòng)化測(cè)試。
jetty和tomcat的區(qū)別
1)Jetty更輕量級(jí)。這是相對(duì)Tomcat而言的。
由于Tomcat除了遵循Java Servlet規(guī)范之外,自身還擴(kuò)展了大量J2EE特性以滿足企業(yè)級(jí)應(yīng)用的需求,所以Tomcat是較重量級(jí)的,而且配置較Jetty亦復(fù)雜許多。但對(duì)于大量普通互聯(lián)網(wǎng)應(yīng)用而言,并不需要用到Tomcat其他高級(jí)特性,所以在這種情況下,使用Tomcat是很浪費(fèi)資源的。這種劣勢(shì)放在分布式環(huán)境下,更是明顯。換成Jetty,每個(gè)應(yīng)用服務(wù)器省下那幾兆內(nèi)存,對(duì)于大的分布式環(huán)境則是節(jié)省大量資源。而且,Jetty的輕量級(jí)也使其在處理高并發(fā)細(xì)粒度請(qǐng)求的場(chǎng)景下顯得更快速高效。
2)Jetty更靈活,體現(xiàn)在其可插拔性和可擴(kuò)展性,更易于開(kāi)發(fā)者對(duì)Jetty本身進(jìn)行二次開(kāi)發(fā),定制一個(gè)適合自身需求的Web Server。
相比之下,重量級(jí)的Tomcat原本便支持過(guò)多特性,要對(duì)其瘦身的成本遠(yuǎn)大于豐富Jetty的成本。用自己的理解,即增肥容易減肥難。
3)然而,當(dāng)支持大規(guī)模企業(yè)級(jí)應(yīng)用時(shí),Jetty也許便需要擴(kuò)展,在這場(chǎng)景下Tomcat便是更優(yōu)的。
總結(jié):Jetty更滿足公有云的分布式環(huán)境的需求,而Tomcat更符合企業(yè)級(jí)環(huán)境。