Java EE容器調(diào)查:Tomcat大受歡迎 WebLogic成時(shí)間殺手
原創(chuàng)【51CTO快譯】上個(gè)星期,我們做了一項(xiàng)調(diào)查,向受訪者詢問(wèn)了幾個(gè)有關(guān)Java EE的發(fā)展、Java EE容器、重新部署和重新啟動(dòng)時(shí)間的問(wèn)題。令我們驚訝的是,受訪者如此迅速的對(duì)這些問(wèn)題作出了回答,看來(lái)這已經(jīng)成為一個(gè)熱門話題了!
在某種程度上,我們必須為我們所做的分析劃清界線,所以我們只采用前700人的回復(fù),并由此建立了如下圖表。如果回復(fù)的數(shù)量有重大變化,我們會(huì)根據(jù)***結(jié)果來(lái)更新這些圖表。這項(xiàng)調(diào)查仍在進(jìn)行當(dāng)中。
如果你想自己分析這些結(jié)果,我們已經(jīng)為你提供了一份數(shù)據(jù)。當(dāng)我們得到新的回復(fù)時(shí),這些數(shù)據(jù)也可能更新。電子郵件地址已從這份數(shù)據(jù)中刪除。
我們希望這一資料能為大家提供一些關(guān)于Java EE容器和系統(tǒng)開發(fā)生產(chǎn)效能的有趣的見(jiàn)解!由于我們并不是專業(yè)調(diào)查人士,所以我們的數(shù)據(jù)和解釋可能會(huì)有一些缺陷。我們?cè)谙旅鏁?huì)提到其中的一些,歡迎你親自來(lái)分析這些數(shù)據(jù)。
“最常用的Java EE容器”
我們的問(wèn)題是:“你在你目前***的Java EE項(xiàng)目上使用的是什么容器?”。這個(gè)問(wèn)題與圖表的標(biāo)題稍有不同。不幸的是,我們并沒(méi)有明確的區(qū)別用于開發(fā)和用于生產(chǎn)的容器,所以這里的答案可能會(huì)有些混淆,下次我們會(huì)改進(jìn),爭(zhēng)取做得更好些。從圖表中可以看出Tomcat可以說(shuō)是***的Java EE容器。有關(guān)Tomcat的配置可參考51CTO之前發(fā)布的Tomcat的配置技巧精華詳解一文。
像往常一樣,答案層出不窮。任何少于7票的回答(調(diào)查總票數(shù)的 1 %)都沒(méi)有放在該餅圖中。這些被刪掉的容器有:
◆Tmaxsoft JEUS- 4
◆SAP NetWeaver- 3
◆Iona/Progress Artix- 1
◆zeus 4.x- 1
◆Sybase EAServer- 1
◆Impala- 1
◆Adobe JRun- 1
◆Jonas 4.x- 1
◆其他一些在列表當(dāng)中五花八門的老版本容器
“平均每個(gè)容器重新部署+應(yīng)用程序重新啟動(dòng)要多長(zhǎng)時(shí)間?”
實(shí)際上這個(gè)問(wèn)題是:“需要多長(zhǎng)時(shí)間重新啟動(dòng)容器和重新部署你的應(yīng)用程序?”現(xiàn)在,你會(huì)認(rèn)為那些回答“我從來(lái)沒(méi)有重新部署”的人們?cè)诮酉聛?lái)的問(wèn)題中將會(huì)質(zhì)疑這一個(gè)問(wèn)題,因?yàn)樗麄儚膩?lái)沒(méi)有重新部署。顯然,他們克服了這一困難。他們可能回答得很隨意,或如果他們是JavaRebel用戶,他們會(huì)回答到:在重新配置之前,他們需要大量的時(shí)間來(lái)重啟/重新配置。
Java EE 開發(fā)者在一個(gè)小時(shí)的編碼中要重新配置多少次?
實(shí)際的問(wèn)題是: “在一個(gè)小時(shí)的編程中,你會(huì)重新部署多少次?”不幸的是,我們?cè)谶@里犯了一個(gè)小錯(cuò)誤。當(dāng)選擇了多少次重新配置的時(shí)候,那些清楚知道他們需要重新配置7次的人們面臨兩難境地。希望他們能夠克服這個(gè)問(wèn)題,他們?cè)谶@點(diǎn)上犯了錯(cuò)誤,對(duì)他們說(shuō)5-7次或7-10次更合理。
對(duì)那些回答 “我從來(lái)沒(méi)有重新配置”過(guò)的人們 ,我們會(huì)問(wèn)他們是如何做到的。答復(fù)如下:
1. “我不負(fù)責(zé)重新部署?!?
2. “我們?cè)谡{(diào)試模式下開發(fā)嵌入式j(luò)etty,activemq和 atomikos,而往往使用Oracle AS 。當(dāng)然,我們需要像往常一樣重新部署或重新啟動(dòng)jetty,但并非OAS?!?
3. “我正處于項(xiàng)目的初期階段,所以我花了很多時(shí)間在編碼和測(cè)試上,而沒(méi)有重新部署過(guò)。在其他的時(shí)候,我一個(gè)小時(shí)通常要重新配置3-4次”
4. “我們都在使用JavaRebel,它好極了”,它使我相信,我應(yīng)該問(wèn)問(wèn)那些以前使用過(guò)JavaRebel的人們,因?yàn)樵谀撤N程度上這可能會(huì)有偏見(jiàn)。
Java EE容器單位生產(chǎn)率信息
對(duì)于下面幾個(gè)容器的具體圖表,Jetty,Oracle,以及Caucho的容器有可能有輕微錯(cuò)誤,原因很簡(jiǎn)單,在我們的調(diào)查當(dāng)中沒(méi)有那么多調(diào)查者填寫這些容器的數(shù)據(jù)。只有27個(gè)受訪者使用Jetty,20個(gè)使用Oracle,10個(gè)使用Resin 。像這樣的數(shù)字很容易改變結(jié)果。當(dāng)然,來(lái)自Tomcat用戶207個(gè)調(diào)查結(jié)果并不是很多,但至少平均數(shù)更為準(zhǔn)確。解決方案:調(diào)查更多的受訪者。這項(xiàng)統(tǒng)計(jì)調(diào)查仍然有效。
重新部署一個(gè)特定的容器需要多長(zhǎng)時(shí)間(分鐘)
容器X是否影響漸增性開發(fā)(平均每小時(shí)重新部署的次數(shù))?
我們認(rèn)為,容器的迅速重新部署將導(dǎo)致更多的漸增性開發(fā),這的確普遍如此,但也有例外。
每小時(shí)編碼中容器X重新部署一共花費(fèi)的時(shí)間
像這樣計(jì)算:
平均每小時(shí)重新部署的時(shí)間 =每小時(shí)編程中重新部署的平均數(shù)x重新部署的平均時(shí)長(zhǎng)(見(jiàn)“平均重新配置有多長(zhǎng)”圖表) 。
重新部署容器X所占開發(fā)時(shí)間的比例
像這樣來(lái)計(jì)算:
重新部署編程時(shí)間百分比=平均每小時(shí)編程中重新部署的時(shí)間除以60 (分鐘)
“Java EE開發(fā)者每年有多少時(shí)間花在重新部署容器和重啟應(yīng)用上面呢?”(以小時(shí)計(jì)算)
我們希望保守估計(jì)這個(gè)數(shù)字,因此我們采用的是在每編程一小時(shí)重新部署的時(shí)間,并在這些假設(shè)的基礎(chǔ)上對(duì)一年的工作時(shí)間進(jìn)行分析:
1. 一個(gè)開發(fā)者很少一天編程達(dá)到8小時(shí)。我們還應(yīng)該把非編程日、會(huì)議、咖啡時(shí)間、玩桌上足球、電子郵件、閑聊等因素考慮進(jìn)去。我們假設(shè)的是,平均每天編程4個(gè)小時(shí),每星期5天。
2.我們還假設(shè),一部分人有休息日和假期,還有其他理由使得他們不會(huì)每天編程。這些原因a)將使每年的編程時(shí)間減少數(shù)周, b)平均每天減少了#小時(shí)??紤]到這些因素,我們認(rèn)為每年實(shí)際工作的時(shí)間是40周而不是52周。這12個(gè)星期應(yīng)占幾乎囊括了所有會(huì)減少每周/每天編程小時(shí)的任何事情。我們料想,如果你每天不編碼4小時(shí),每周5天,至少每年40周,那么你可能沒(méi)有回答這一調(diào)查。如果我們這里有偏差,或這不還夠保守的,請(qǐng)讓我們知道。
調(diào)查綜述:收到超過(guò)700名迅速的回復(fù)給我們留下了深刻的印象。我們很想知道你對(duì)這結(jié)果是如何看待的。比如說(shuō)先回答這個(gè)問(wèn)題:你能接受每個(gè)開發(fā)人員平均每年在Java容器重部署上花費(fèi)81到319小時(shí)嗎?
Java EE容器是天堂還是地獄?
原文:Survey Results: Java EE Containers – Heaven or Hell?
【編輯推薦】