【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容器是天堂还是地狱?
原文:Survey Results: Java EE Containers – Heaven or Hell?
【编辑推荐】