【51CTO快譯】上個星期,我們做了一項調查,向受訪者詢問了幾個有關Java EE的發展、Java EE容器、重新部署和重新啟動時間的問題。令我們驚訝的是,受訪者如此迅速的對這些問題作出了回答,看來這已經成為一個熱門話題了!
在某種程度上,我們必須為我們所做的分析劃清界線,所以我們只采用前700人的回復,並由此建立了如下圖表。如果回復的數量有重大變化,我們會根據最新結果來更新這些圖表。這項調查仍在進行當中。
如果你想自己分析這些結果,我們已經為你提供了一份數據。當我們得到新的回復時,這些數據也可能更新。電子郵件地址已從這份數據中刪除。
我們希望這一資料能為大家提供一些關於Java EE容器和系統開發生產效能的有趣的見解!由於我們並不是專業調查人士,所以我們的數據和解釋可能會有一些缺陷。我們在下面會提到其中的一些,歡迎你親自來分析這些數據。
“最常用的Java EE容器”
我們的問題是:“你在你目前最大的Java EE項目上使用的是什麼容器?”。這個問題與圖表的標題稍有不同。不幸的是,我們並沒有明確的區別用於開發和用於生產的容器,所以這裡的答案可能會有些混淆,下次我們會改進,爭取做得更好些。從圖表中可以看出Tomcat可以說是最受歡迎的Java EE容器。有關Tomcat的配置可參考51CTO之前發布的Tomcat的配置技巧精華詳解一文。
像往常一樣,答案層出不窮。任何少於7票的回答(調查總票數的 1 %)都沒有放在該餅圖中。這些被刪掉的容器有:
◆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
◆其他一些在列表當中五花八門的老版本容器
“平均每個容器重新部署+應用程序重新啟動要多長時間?”
實際上這個問題是:“需要多長時間重新啟動容器和重新部署你的應用程序?”現在,你會認為那些回答“我從來沒有重新部署”的人們在接下來的問題中將會質疑這一個問題,因為他們從來沒有重新部署。顯然,他們克服了這一困難。他們可能回答得很隨意,或如果他們是JavaRebel用戶,他們會回答到:在重新配置之前,他們需要大量的時間來重啟/重新配置。
Java EE 開發者在一個小時的編碼中要重新配置多少次?
實際的問題是: “在一個小時的編程中,你會重新部署多少次?”不幸的是,我們在這裡犯了一個小錯誤。當選擇了多少次重新配置的時候,那些清楚知道他們需要重新配置7次的人們面臨兩難境地。希望他們能夠克服這個問題,他們在這點上犯了錯誤,對他們說5-7次或7-10次更合理。
對那些回答 “我從來沒有重新配置”過的人們 ,我們會問他們是如何做到的。答復如下:
1. “我不負責重新部署。”
2. “我們在調試模式下開發嵌入式jetty,activemq和 atomikos,而往往使用Oracle AS 。當然,我們需要像往常一樣重新部署或重新啟動jetty,但並非OAS。”
3. “我正處於項目的初期階段,所以我花了很多時間在編碼和測試上,而沒有重新部署過。在其他的時候,我一個小時通常要重新配置3-4次”
4. “我們都在使用JavaRebel,它好極了”,它使我相信,我應該問問那些以前使用過JavaRebel的人們,因為在某種程度上這可能會有偏見。
Java EE容器單位生產率信息
對於下面幾個容器的具體圖表,Jetty,Oracle,以及Caucho的容器有可能有輕微錯誤,原因很簡單,在我們的調查當中沒有那麼多調查者填寫這些容器的數據。只有27個受訪者使用Jetty,20個使用Oracle,10個使用Resin 。像這樣的數字很容易改變結果。當然,來自Tomcat用戶207個調查結果並不是很多,但至少平均數更為准確。解決方案:調查更多的受訪者。這項統計調查仍然有效。
重新部署一個特定的容器需要多長時間(分鐘)
容器X是否影響漸增性開發(平均每小時重新部署的次數)?
我們認為,容器的迅速重新部署將導致更多的漸增性開發,這的確普遍如此,但也有例外。
每小時編碼中容器X重新部署一共花費的時間
像這樣計算:
平均每小時重新部署的時間 =每小時編程中重新部署的平均數x重新部署的平均時長(見“平均重新配置有多長”圖表) 。
重新部署容器X所占開發時間的比例
像這樣來計算:
重新部署編程時間百分比=平均每小時編程中重新部署的時間除以60 (分鐘)
“Java EE開發者每年有多少時間花在重新部署容器和重啟應用上面呢?”(以小時計算)
我們希望保守估計這個數字,因此我們采用的是在每編程一小時重新部署的時間,並在這些假設的基礎上對一年的工作時間進行分析:
1. 一個開發者很少一天編程達到8小時。我們還應該把非編程日、會議、咖啡時間、玩桌上足球、電子郵件、閒聊等因素考慮進去。我們假設的是,平均每天編程4個小時,每星期5天。
2.我們還假設,一部分人有休息日和假期,還有其他理由使得他們不會每天編程。這些原因a)將使每年的編程時間減少數周, b)平均每天減少了#小時。考慮到這些因素,我們認為每年實際工作的時間是40周而不是52周。這12個星期應占幾乎囊括了所有會減少每周/每天編程小時的任何事情。我們料想,如果你每天不編碼4小時,每周5天,至少每年40周,那麼你可能沒有回答這一調查。如果我們這裡有偏差,或這不還夠保守的,請讓我們知道。
調查綜述:收到超過700名迅速的回復給我們留下了深刻的印象。我們很想知道你對這結果是如何看待的。比如說先回答這個問題:你能接受每個開發人員平均每年在Java容器重部署上花費81到319小時嗎?
Java EE容器是天堂還是地獄?