分析公司Forrester Research的分析師這樣評(píng)價(jià)Tomcat:“Tomcat可能是排在Apache Web 服務(wù)器和MySQL 數(shù)據(jù)庫(kù)之后使用最多的開(kāi)源產(chǎn)品。”BZ最新的調(diào)查研究則為此提供了有力的證據(jù):Apache Tomcat是Java社區(qū)最常用的應(yīng)用服務(wù)器——64%的Java開(kāi)發(fā)者選擇使用Tomcat。
現(xiàn)任空中網(wǎng)研發(fā)工程師的賀煒認(rèn)為,Tomcat之所以大受歡迎原因主要有以下五點(diǎn):
1. Tomcat 是 Apache 的核心項(xiàng)目之一,也被 SUN 視作 Servlet/JSP 容器的一個(gè)重要參考實(shí)現(xiàn)而加以支持。因此 SUN 最新的 Servlet/JSP 規(guī)范,往往能夠很快地在 Tomcat 的新版本中得到體現(xiàn);
2. Tomcat 是一個(gè)小巧精致的 web 應(yīng)用服務(wù)器,配置、安裝、運(yùn)行、部署 web 應(yīng)用都很簡(jiǎn)單,這讓用戶能夠很快地上手使用;
3. 開(kāi)源軟件的生命力,往往與其社區(qū)的狀況有緊密的聯(lián)系。在一個(gè)健康、活躍的社區(qū),用戶的疑問(wèn)通常能夠及時(shí)地解決,用戶的反饋往往能夠得到有效地處理,這樣會(huì)吸引更多的用戶加入到社區(qū)中來(lái);反過(guò)來(lái),不斷擴(kuò)大的用戶群,也會(huì)促進(jìn)社區(qū)的發(fā)展。Tomcat 所擁有的優(yōu)秀社區(qū),對(duì)開(kāi)發(fā)者而言,無(wú)論用什么標(biāo)準(zhǔn)來(lái)評(píng)價(jià),都是充滿吸引力的;
4. 編寫(xiě)良好的文檔,是開(kāi)發(fā)者在開(kāi)發(fā)中最好的幫手之一。Apache 在開(kāi)源社區(qū)中,無(wú)疑是撰寫(xiě)文檔方面的佼佼者;
5. 因?yàn)殚_(kāi)源和免費(fèi)的特性,使得用戶可以自由無(wú)障礙地下載、安裝、使用 Tomcat。這也是 Tomcat 能夠被廣泛使用的重要原因之一。
我們都知道Tomcat 最初是作為 Servlet/JSP 容器的參考實(shí)現(xiàn)而進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,在性能方面,并沒(méi)有做過(guò)多的考量。經(jīng)過(guò)幾年的時(shí)間,Apache 發(fā)現(xiàn) Servlet/JSP 容器并非只是 J2EE 環(huán)境的一部分而已。大量 web 應(yīng)用并不需要 J2EE 這樣的龐然大物,完全可以將 Tomcat 作為一個(gè)單獨(dú)的 web 應(yīng)用服務(wù)器來(lái)使用。
這實(shí)際也正是Tomcat受歡迎的另一原因所在——很多開(kāi)發(fā)者不需要如EJBs、JMS、分布式事務(wù)處理等 J2EE組件。Rod Johnson 在他的《J2EE Development without EJB》一書(shū)中,指出了 J2EE 的許多不足之處。比如說(shuō),傳統(tǒng) J2EE(Java EE 5之前的 J2EE)中的 Entity EJB 是不怎么招人喜歡的。在 Java EE 5 中,過(guò)時(shí)的 Entity EJB 組件被淘汰掉,數(shù)據(jù)持久化的工作,交給了深受 Hibernate 此類 ORM 工具影響的 JPA 來(lái)完成。分布式對(duì)象在大多數(shù)情況下,也是不合時(shí)宜的。
Martin Fowler 在《企業(yè)應(yīng)用架構(gòu)模式》中寫(xiě)道:分布式對(duì)象設(shè)計(jì)的第一原則就是——不要分布你的對(duì)象。他給出的建議是將所有的組件部署到集群中的每一個(gè)節(jié)點(diǎn)中去。因而對(duì)于大部分 web 應(yīng)用,Tomcat 應(yīng)用服務(wù)器就能滿足需求。通過(guò)諸如 Spring-Struts-Hibernate 這樣的組合,我們可以快速而靈活地開(kāi)發(fā)出能夠滿足復(fù)雜業(yè)務(wù)需求的 web 系統(tǒng)來(lái)。
在開(kāi)發(fā)實(shí)踐中除了 Tomcat賀煒還使用過(guò)Resin,就二者的性能方面,賀煒簡(jiǎn)單比較了一下:在幾年前,Resin 2.x 的性能比同時(shí)期的 Tomcat 要好不少。但是 Tomcat 自設(shè)計(jì)實(shí)現(xiàn)了全新的 Catalina 引擎之后,在性能方面的問(wèn)題便持續(xù)得到改善。而 Resin 在步入 3.x 版本后,劃分成免費(fèi)的 Open Source 版本和收費(fèi)的 Pro 版本。有相當(dāng)多的測(cè)試表明,Resin 3.x OS 的性能,與 Tomcat 5/6 相比要低得多;
在配置方面,同 Resin 相比,Tomcat 還是顯得稍微繁瑣一點(diǎn)。對(duì)于中國(guó)的開(kāi)發(fā)者而言,為了避免系統(tǒng)中出現(xiàn)亂碼,往往還需要對(duì) Tomcat 進(jìn)行一些額外的配置才可以。而 Resin 在這一方面表現(xiàn)得很好,在絕大多數(shù)情況下,基本上不用做任何配置就能正常處理中文而不會(huì)出現(xiàn)亂碼的問(wèn)題。
“另外,在 Resin 3.x Pro 中,提供了諸如緩存、集群等高級(jí)特性,倘若 Tomcat 在這方面有所加強(qiáng),對(duì)于開(kāi)發(fā)者而言無(wú)疑是非常美好的一件事情。”
談到Tomcat未來(lái)的趨勢(shì),賀煒說(shuō)“目前 Tomcat 無(wú)疑是使用最為廣泛的 web 應(yīng)用服務(wù)器之一,完全有理由相信這樣的情況至少還會(huì)持續(xù)數(shù)年。但是天邊已經(jīng)出現(xiàn)兩朵小小的、令人不安的烏云。”
Ruby on Rails 所展現(xiàn)的開(kāi)發(fā)方式與它所產(chǎn)生的高生產(chǎn)率,給予 Java 開(kāi)發(fā)者們的震撼很大。如果 Java 社區(qū)不能及時(shí)有效地改進(jìn) web 應(yīng)用開(kāi)發(fā)的方式,那么包括 Tomcat 在內(nèi)的眾多 Java 社區(qū)都會(huì)受到 RoR 不小的沖擊。可能正如 Bruce Tate 所預(yù)言的那樣,Java 在未來(lái)將更加著重于解決更復(fù)雜的事情,而普通 web 應(yīng)用開(kāi)發(fā)領(lǐng)域,則會(huì)逐步讓位給像 RoR 這樣高度靈活快速的技術(shù)
現(xiàn)任空中網(wǎng)研發(fā)工程師的賀煒認(rèn)為,Tomcat之所以大受歡迎原因主要有以下五點(diǎn):
1. Tomcat 是 Apache 的核心項(xiàng)目之一,也被 SUN 視作 Servlet/JSP 容器的一個(gè)重要參考實(shí)現(xiàn)而加以支持。因此 SUN 最新的 Servlet/JSP 規(guī)范,往往能夠很快地在 Tomcat 的新版本中得到體現(xiàn);
2. Tomcat 是一個(gè)小巧精致的 web 應(yīng)用服務(wù)器,配置、安裝、運(yùn)行、部署 web 應(yīng)用都很簡(jiǎn)單,這讓用戶能夠很快地上手使用;
3. 開(kāi)源軟件的生命力,往往與其社區(qū)的狀況有緊密的聯(lián)系。在一個(gè)健康、活躍的社區(qū),用戶的疑問(wèn)通常能夠及時(shí)地解決,用戶的反饋往往能夠得到有效地處理,這樣會(huì)吸引更多的用戶加入到社區(qū)中來(lái);反過(guò)來(lái),不斷擴(kuò)大的用戶群,也會(huì)促進(jìn)社區(qū)的發(fā)展。Tomcat 所擁有的優(yōu)秀社區(qū),對(duì)開(kāi)發(fā)者而言,無(wú)論用什么標(biāo)準(zhǔn)來(lái)評(píng)價(jià),都是充滿吸引力的;
4. 編寫(xiě)良好的文檔,是開(kāi)發(fā)者在開(kāi)發(fā)中最好的幫手之一。Apache 在開(kāi)源社區(qū)中,無(wú)疑是撰寫(xiě)文檔方面的佼佼者;
5. 因?yàn)殚_(kāi)源和免費(fèi)的特性,使得用戶可以自由無(wú)障礙地下載、安裝、使用 Tomcat。這也是 Tomcat 能夠被廣泛使用的重要原因之一。
我們都知道Tomcat 最初是作為 Servlet/JSP 容器的參考實(shí)現(xiàn)而進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,在性能方面,并沒(méi)有做過(guò)多的考量。經(jīng)過(guò)幾年的時(shí)間,Apache 發(fā)現(xiàn) Servlet/JSP 容器并非只是 J2EE 環(huán)境的一部分而已。大量 web 應(yīng)用并不需要 J2EE 這樣的龐然大物,完全可以將 Tomcat 作為一個(gè)單獨(dú)的 web 應(yīng)用服務(wù)器來(lái)使用。
這實(shí)際也正是Tomcat受歡迎的另一原因所在——很多開(kāi)發(fā)者不需要如EJBs、JMS、分布式事務(wù)處理等 J2EE組件。Rod Johnson 在他的《J2EE Development without EJB》一書(shū)中,指出了 J2EE 的許多不足之處。比如說(shuō),傳統(tǒng) J2EE(Java EE 5之前的 J2EE)中的 Entity EJB 是不怎么招人喜歡的。在 Java EE 5 中,過(guò)時(shí)的 Entity EJB 組件被淘汰掉,數(shù)據(jù)持久化的工作,交給了深受 Hibernate 此類 ORM 工具影響的 JPA 來(lái)完成。分布式對(duì)象在大多數(shù)情況下,也是不合時(shí)宜的。
Martin Fowler 在《企業(yè)應(yīng)用架構(gòu)模式》中寫(xiě)道:分布式對(duì)象設(shè)計(jì)的第一原則就是——不要分布你的對(duì)象。他給出的建議是將所有的組件部署到集群中的每一個(gè)節(jié)點(diǎn)中去。因而對(duì)于大部分 web 應(yīng)用,Tomcat 應(yīng)用服務(wù)器就能滿足需求。通過(guò)諸如 Spring-Struts-Hibernate 這樣的組合,我們可以快速而靈活地開(kāi)發(fā)出能夠滿足復(fù)雜業(yè)務(wù)需求的 web 系統(tǒng)來(lái)。
在開(kāi)發(fā)實(shí)踐中除了 Tomcat賀煒還使用過(guò)Resin,就二者的性能方面,賀煒簡(jiǎn)單比較了一下:在幾年前,Resin 2.x 的性能比同時(shí)期的 Tomcat 要好不少。但是 Tomcat 自設(shè)計(jì)實(shí)現(xiàn)了全新的 Catalina 引擎之后,在性能方面的問(wèn)題便持續(xù)得到改善。而 Resin 在步入 3.x 版本后,劃分成免費(fèi)的 Open Source 版本和收費(fèi)的 Pro 版本。有相當(dāng)多的測(cè)試表明,Resin 3.x OS 的性能,與 Tomcat 5/6 相比要低得多;
在配置方面,同 Resin 相比,Tomcat 還是顯得稍微繁瑣一點(diǎn)。對(duì)于中國(guó)的開(kāi)發(fā)者而言,為了避免系統(tǒng)中出現(xiàn)亂碼,往往還需要對(duì) Tomcat 進(jìn)行一些額外的配置才可以。而 Resin 在這一方面表現(xiàn)得很好,在絕大多數(shù)情況下,基本上不用做任何配置就能正常處理中文而不會(huì)出現(xiàn)亂碼的問(wèn)題。
“另外,在 Resin 3.x Pro 中,提供了諸如緩存、集群等高級(jí)特性,倘若 Tomcat 在這方面有所加強(qiáng),對(duì)于開(kāi)發(fā)者而言無(wú)疑是非常美好的一件事情。”
談到Tomcat未來(lái)的趨勢(shì),賀煒說(shuō)“目前 Tomcat 無(wú)疑是使用最為廣泛的 web 應(yīng)用服務(wù)器之一,完全有理由相信這樣的情況至少還會(huì)持續(xù)數(shù)年。但是天邊已經(jīng)出現(xiàn)兩朵小小的、令人不安的烏云。”
Ruby on Rails 所展現(xiàn)的開(kāi)發(fā)方式與它所產(chǎn)生的高生產(chǎn)率,給予 Java 開(kāi)發(fā)者們的震撼很大。如果 Java 社區(qū)不能及時(shí)有效地改進(jìn) web 應(yīng)用開(kāi)發(fā)的方式,那么包括 Tomcat 在內(nèi)的眾多 Java 社區(qū)都會(huì)受到 RoR 不小的沖擊。可能正如 Bruce Tate 所預(yù)言的那樣,Java 在未來(lái)將更加著重于解決更復(fù)雜的事情,而普通 web 應(yīng)用開(kāi)發(fā)領(lǐng)域,則會(huì)逐步讓位給像 RoR 這樣高度靈活快速的技術(shù)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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