写点什么

问卷结果:JavaEE 容器重部署和重启时间

  • 2009-09-27
  • 本文字数:1581 字

    阅读完需:约 5 分钟

近日, Jevgeni Kabanov 公布了一份几个月前做的关于 JavaEE 开发、容器和部署时间的调查结果。结果显示有超过 1100 人参加了这次问卷调查。这里是下载版的问卷结果。而下面是Jevgeni 作出的针对每个问题答案分析的摘要。

问卷的第一个问题是:“你在目前参与的最大型项目中使用的是什么容器?”

图表1:哪个容器是最常使用的?

这里没有包括那些得分不到10 分的容器。毫无悬念,Apache 的Tomcat 占据了头把交椅,而JBoss 紧随其后。开源的服务器占到了70% 的比例。虽然不能把这样的比例直接等同于容器们的市场份额,但这样的结果跟 SD Time 作出的研究结果有异曲同工之妙,在他们的调查中允许人们选择多个容器。

第二个问题是:“重启你的容器并重新部署应用要花费多少时间?”

图表 2: “重启你的容器并重新部署应用要花费多少时间”(横轴是分钟)

这样,计算出平均时间在 2.5 分钟左右,这跟事先评估的大概 1 分钟相去甚远。

第三个问题:“编码一个小时,你会重新部署几次?”

图表 3:“编码一个小时,你会重新部署几次?****”

对于那些回答“我不需要重新部署”的人,我们询问了他们是如何做到的,答案有以下这些:

  • “我不负责重新部署”
  • “我们在嵌入式 jetty&activemq&atomikos 以 debug 模式开发,而不是 OracleAS 上。这样,我们虽然需要重新部署并重启 jetty,但不需要对 OAS 也这么做”
  • “我还处在项目的早期阶段,大部分时间都花在了编码和测试,而不是重新部署上——通常每个小时我会重新部署 3-4 次”
  • “我们使用 JavaRebel,而它真是太棒了!”

接着,我们做了一下数据处理。用一个数字代表次数间隔(比如 3.5 次代表 3-4 次),并把每小时的部署次数与一次重新部署所费时间相乘(基本上就是图 2 和图 3 相乘),这样就得出了在开发过程中每小时会花费的重新部署时间:

图表 4:“ Java 开发者在一个小时编码过程中,花费多长时间来重新部署(原始数据)?”

平均时间是 12 分半,占到了整个开发时间的 20% 还多点。然而,标准差超过 14,这意味着真实的比例变化很大。我们想要显示出更加精确的数据,在分析过参与调查的人们在每个答案上的选择所产生的比例数据后,我们得到了更新后的图表:

图表 5:“ Java 开发者在一个小时编码过程中,花费多长时间来重新部署?****(更加精确的数据)”

这样,平均时间就是 10.5 分钟,标准差是 8,这样的数据更令人信服。这个时间占据了全部开发时间的 17.5%,这远比我们预期的要高。这些干净的数据也将用作接下来的分析。

接着,我们基于每个容器进行了数据分析。下面是我们所发现的:

图表 6:每个容器要花费多少时间来重新部署?

可以看到,Jetty 最快仅需要 5.8 分钟,而 IBM 的 WebSphere 排在了末尾,时间几乎是 Jetty 的两倍还多。但需要注意的是,虽然 Jetty 启动时间要比 WebSphere 要看,但最大的不同很可能是因为部署的应用规模和其中使用到的技术。

接下来,我们拥有了几乎一模一样的图表,但数字显示的是开发时间的一个比例。

图表 7:每个容器中,花在重新部署上的开发时间比例是多大?

下面这张图,显示了按 40 小时每周的时间算,每年要消耗在重新部署上的周数对比。

图表 8:每年有多少个 40 小时周被花费在了重新部署阶段上?

这个数据的平均值是每年 5 个工作周多一点,但标准差 4 使得 3-7 的范围更加可信。

最后一张图表显示了每个容器上所费重新部署时间更加详尽的比例。我们期望这样能显示出使用不同容易的项目规模,从而能让读者大概弄清楚自己的项目会花费多少时间在重新部署上。

图表 9:: Java EE 容器市场渗透率

我们会这样诠释这幅图表:

  • Jetty 只会用在重新部署迅速的项目上。这点毫无疑问,因为 Jetty 不支持重新部署,只是有极快的重新启动时间。
  • Apache Tomcat 和 GlassFish 可以用在相同类型的项目上。两者都是全功能且轻量级的容器。
  • JBoss、Oracle Weblogic 和 IBM WebSphere 争夺同样的市场定位和份额。它们的项目一般都是大而复杂。
2009-09-27 04:262253
用户头像

发布了 127 篇内容, 共 43.7 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

双“11”搞促销?用贪心算法来盘他!

王磊

算法

【DevOps实践】企业应用场景众多,怎样选择合适的代码分支模型?

嘉为蓝鲸

git DevOps 软件开发 持续交付 代码管理

架构师训练营 1 期 - 第八周 - 性能优化 2

三板斧

极客大学架构师训练营

腾讯WeMap,一颗“孢子”的数智化之旅

脑极体

双“11”搞促销?本文教你用贪心算法来盘他!

Java架构师迁哥

【概念篇】你真正了解越来越火的“数据驱动” 吗?

Java架构师迁哥

前端如何一键生成多维度数据可视化分析报表

徐小夕

Java node.js 大前端 React 数据可视化

如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)

徐小夕

Java node.js 大前端 React 数据可视化

甲方日常 50

句子

工作 随笔杂谈 日常

spring-注入配置

Isuodut

Java动态修改LOGGER日志级别

Zhendong

Java Arthas

目标检测-框架之darknet-数据读取

Dreamer

Reactor详解之:异常处理

程序那些事

响应式 reactor 程序那些事 响应式系统 响应式架构

第八周学习性能优化 2 总结

三板斧

极客大学架构师训练营

【再见 — JVM】,需要”我”为你做些什么?

洛神灬殇

Java JVM Java 25 周年 1 周年盛典 InfoQ 写作平台 1 周年

技术干货:Apache Pulsar 在移动云上的应用

Apache Pulsar

大数据 开源 云原生 Apache Pulsar

Pulsar Summit Asia 2020 | 场景案例论坛(下):多行业,多场景

Apache Pulsar

大数据 开源 Apache Pulsar

架构师训练营 1 期 -- 第八周作业

曾彪彪

极客大学架构师训练营

天秀!这份由阿里数位大牛编写的777页高可用架构+MySQL

Java~~~

Java MySQL 编程语言 高并发 架构师

阿里突遭断网断电!双11最惊险一幕刚刚曝光

Java架构师迁哥

一次完整的JVM堆外内存泄漏故障排查记录

Zhendong

关于静态分析技术符号执行,从一个故事讲起······

华为云开发者联盟

代码 分析 静态

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

要求自愿降薪,员工内心普遍满意:“服从”是如何发生的?

脑极体

面试蚂蚁金服,首战被MySQL惨虐,熬夜啃透这份阿里面经复盘一个月再战拿下P7offer

比伯

Java 程序员 架构 面试 阿里

七张图了解Kubernetes内部的架构

网管

Kubernetes k8s k8s入门

架构知识学习总结

小黄鱼

极客大学架构师训练营

技术实践丨基于MindSpore的ResNet-50蘑菇“君”的识别应用体验

华为云开发者联盟

网络 mindspore 识别推理

嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?

比伯

Java spring 编程 程序员 架构

MySQL 的 join 功能弱爆了?

程序员历小冰

MySQL postgres 多表join

【Mycat】Mycat核心开发者带你看尽Mycat三大核心配置文件!!

冰河

分布式数据库 中间件 mycat

问卷结果:JavaEE容器重部署和重启时间_Java_张凯峰_InfoQ精选文章