领先一步
VMware提供培训和认证,以加速您的进步。
了解更多职位列表是衡量技术实际应用情况的重要指标。它们表明公司是否正在投入资金,从而能够区分实质和炒作;它们表明开发者获得和提升相关技能的重要性(技术延续的一个重要因素);它们也为公司采用特定技术提供了良好的安全指南。
因此,Indeed.com(一个职位列表聚合网站)的jobtrends网站是一个重要的资源。它允许追踪一段时间内职位需求数量的趋势,并方便比较不同的技术。
有时,这些趋势会产生戏剧性的影响。Indeed.com显示,在2007年11月,Spring在Java职位列表中的技能需求方面超过了EJB。截至昨天,Spring的职位数量为5710,而EJB为5030。
比较职位数量的绝对值,我们可以看到趋势线以及它们交叉的地方。
鉴于EJB拥有大量的遗留代码,这令人惊讶。据推测,现在很少有新项目使用EJB了。
比较各自增长率的“相对”图表更有趣,它显示了两种技术之间明显的对比。
我们可以看到,EJB的需求停滞不前甚至下降,而Spring的需求却以越来越快的速度增长。
当然,Spring和EJB并非相互排斥。使用Spring并不妨碍你使用EJB,反之亦然。在某些情况下,EJB会提供你在使用Spring的应用程序中可能需要的有用服务。在没有Spring的情况下使用任何版本的EJB,就等于放弃了许多宝贵的额外功能。事实上,正是EJB的支持者(无论出于何种原因)将这两种技术描绘成直接竞争对手。
两种技术之间的重叠是显著且不断增长的,但增长速度不如Spring的需求增长速度快。
虽然这不是一个完全相同的比较,但将Spring和EJB视为企业Java应用程序中核心组件模型的替代方案是合理的。很明显,现在Spring正处于上升阶段。
我必须承认,我对此感到一定程度的个人满意,因为我自2003年初以来就一直在预测EJB将成为遗留技术,并且在此之前就认为EJB被过度使用了。在《J2EE without EJB》中,我详细分析了EJB模型的缺陷,以及它如何未能达到其既定目标或开发者和客户的需求。那时,这样的说法是极具争议的。
EJB 3.0在一定程度上有所改进,但这仍然是太少、太晚了:DI功能不如现实世界所需的那样强大;拦截API认识到需要解决横切关注点的问题,但它提供的解决方案是最不强大、最笨拙、最容易出错的解决方案(我一直想写一篇博客来讨论这个问题);它背负着与现在无关的上一代技术的向后兼容性的包袱;完整的EJB契约(比“简化编程模型”长几百页)规定了一个具有过多开销的复杂运行时;尽管它有语法糖,但它未能解决EJB的一些缺陷,例如启动操作、单例和过时的线程模型。最后,它实际上与应用程序服务器环境绑定在一起,而基础设施正在发生变化。
我可以继续讨论这些缺陷,但职位数量说明了成千上万家公司的实际经验和结论。
请注意,我在这里谈论的是会话Bean和消息Bean;JPA现在是一个单独的规范,基于现代技术,并且正在证明其价值。
EJB的衰落对整个行业以及个体开发者意味着什么?
坦率地说,EJB时代是一个异常。EJB未能解决本世纪初的问题;它对未来的问题仍然更加不足。EJB最初的大多数前提现在都被推翻了;该规范坚持向后兼容性并不能证明它所带来的权衡是合理的。它的衰落是转向一个新的、更灵活的世界的一个自然结果,在这个世界中,诸如OSGi和简单的Servlet API等技术被证明更相关。当然,由于绝对数量仍然非常高,EJB不会很快完全消失。但趋势线清楚地表明,它正在成为遗留技术。
在宣布SpringSource Spring认证计划之前,职位需求达到了这个里程碑,这正逢其时。现在Spring已经成为市场上如此重要的技能,因此对雇主和开发者来说,拥有衡量Spring知识的明确标准非常重要。
2007年领先行业网站的统计数据最近也进一步证明了Spring的势头。在ServerSide上,前5篇文章中有2篇是关于Spring的,包括排名第一的文章。在InfoQ上,前10篇文章中有3篇是关于Spring的,其中排名第一的文章(我的Spring 2.0更新)的页面浏览量是第二名文章的4倍。