上周,伯顿集团发生了一件惊天动地的事情,Monson-Haefel发表了一篇名为“JEE5:Java EE预示结局的先兆”的报告。Java平台企业版就像是一种史前动物,因为它整体过于庞大无法仅仅依靠可食植物来维持生存而导致灭绝,伯顿分析师说随着JEE5中spring的发布,Java平台企业版已经变得过于复杂导致企业级开发人员很难使用它,他们越来越期待着替代版的出现,譬如Ruby-on-Rails。
Monson-Haefel的结论如同死亡证明书一样残酷:“JEE5在复杂性上的失败是预示着Java企业版平台终从企业开发平台领域的统治地位上落败。所有企业在考虑新的企业开发时应该多参考一些其他的平台,而且企业也应该提早做出准备以应对作为企业解决方案的Java EE的最终消亡。”
Java企业版平台的发展将不可避免的效仿以往的一些标准,比如CORBA(通用请求代理体系),它们曾经也非常有前途,但最终还是走向了没落,他说。
“五年内,Java平台企业版将成为 21世纪的CORBA,” Monson-Haefel说道。“人们将看着它说‘它曾经也盛极一时’,但是因为太复杂,现在已经没人愿意再使用它了。”
他努力强调说他仅仅是揭示了Java EE平台的衰落之路,绝不是Java语言的。
“Java程序设计语言是不会有任何危险的”这位伯顿分析师说。“我认为Java程序设计语言在近几年内将继续发展成为企业级开发的支柱。”
Monson-Haefel不是唯一一个预测Java EE平台失败并把SOA当作造成这一结果的原因之一的分析师。
“Java EE现在已经时日不多了,” ZapThink 公司的高级分析师Jason Bloomberg说,他同样也看到了导致这一后果的罪魁祸首就是Java EE每个新版本所增加的复杂度。“很明显,只要发布了新版本或者增加了模块,唯一增加的只有复杂性。最终,它会被自己压垮。从目前看来,将来是不会开发出比已有的Java EE更精简的版本。”
即使先把复杂性放到一边不说,当提到要进入面向服务的企业这个新时代时,作为SOA和Web服务方面的专家Bloomberg就已经看到了Java平台自身的致命缺陷。
“从根本上而言,Java EE的世界并不是为SOA而创建的,” ZapThink公司的分析师说。“现在,你可以依靠基于J2EE的运行时基础架构,在Java和许多用于SOA实现的产品上创建非常棒的SOA实现。事实上,Java有很多面——一种面向对象程序设计语言、一个虚拟机的基础结构,并且Java的Java EE是特定的一个实现n层架构的框架。不幸的是,Java的任何一面,或者是任何一种虚拟机都不适合做SOA的开发平台。”
在Java EE中实现的面向对象(OO)并不完全符合SOA的核心——面向服务,Bloomberg争辩道。
“从面向对象的角度来看,服务和服务的实例是相同的概念,”他说。“对象实例是独立存在的这一整套概念在SOA中价值甚微。”
Java EE中的虚拟机也不是SOA的最佳解决方案,Bloomberg说。
“虚拟机的目标是为了增强代码可移植性,但是在SOA中,互操作却是更加重要的,”他说。“在SOA中,如果你并不需要移动代码,那为什么还要克服这些困难去实现代码移植呢?从根本上来说,分布式计算的虚拟机方式是通过对象串行化来实现远程方法调用,但是SOA却是在固定的界面下实现服务之间的信息交换。”
从Monson-Haefel的观点来看,面向服务使得对统一平台(如Java EE)的需要变得无关紧要。
“SOA确实降低了一个公共程序设计模型的重要程度,”伯顿的分析师说。“因为真正重要的不再是服务于通信的模型,而是通信本身。它是你正在交换的数据。它是与你完成交换数据关系紧密的方法,而不是数据背后的程序设计模型。”
Java EE最主要的优势在于提供了一个公共的程序设计模型,但是,当进行SOA领域的开发时,这并不是最重要的。Monson-Haefel说。
“SOA和Web服务降低了后台如何运行的重要程度,”伯顿的分析师说。“这两者强调的是如何相互合作,比如说,Web服务的XML和HTTP如何相互合作。后台如何运行已经不重要了。”
最后,ZapThink公司的Bloomberg说:企业级的JavaBeans/Servlet/Java Server Pages框架都与SOA不一致。
“你可以看到,Java EE的重点在于为可升级的n-层架构提供框架,这正是那些大的事务处理网站所需要的,” Bloomberg说。“然而,如果你是要为SOA创建一个企业级框架的话,那么你所要完成的构建与在Java EE平台下的构建就大相庭径了。你需要创建的框架是以激活和维持服务提取层为中心的,这对SOA而言是至关重要的。因此,Java EE非常适合于基于平台的日常服务,但不是SOA。”