Ejb 人人喊打 Sun想用Ajax 拯救Java EE
2006.11.08 来自:IT168
从企业的视角来看,它们不在乎你是否使用EJB 3.0、还是使用Spring或者Hibernate,对于架构师来说,全都是JEE。
编者按:好久没有关注Java EE了,这两天恶补了一下,不看不知道,一看吓一跳,Java EE在过去的一年里发生了如此大的变化:Ejb,那个曾经作为Java EE核心部件的概念中,如今已经没落了,落得人人喊打的地步,有人竟用“拯救”一词来形容JEE,真的让我感慨万千,2005年还风光无限,而如今却落得这步田地,人们不仅要问“难道Java EE不能像Ajax一样吗”。
在读这篇文章之前我们来认识一下文章的两位主人公:
Brandon Werner :布兰登维尔纳是辛辛提那州的科技企业家和软件设计师,同时也是世界开发协会XML标准组织成员之一。
Gavin King:Hibernate项目和EJB 3.0规范的发明人,以火爆的脾气和自负的性格而闻名业界,他当时发现CMP太滥,在没有任何SQL开发数据库的经验的情况下,Gavin King开发Hibernate的第一件事是去街上买了本SQL基础的书,被业界评为走向天堂阶梯的传奇人物。
那么让我们来看看两位有着特殊身份的人物在网上说了什么?
JEE缘何没有Ajax思想
Brandon Werner表示,SOA平台远比Java要强大,这就是为什么包括BEA、IBM在内的其他公司甚至根本不提供它们的SOA思想给JCP的原因。
在现实世界中,我们正在向一个SOA风格的业务实现过程和模型靠拢,Werner说到,我们必须停止在具体技术方面的思考,而开始在模式和方法方面的思考,这才是处理我们正在解决问题的最好办法。
同时Werner在其博客上发表了一篇题为“如何拯救JEE,绝不是EJB3.0”的观察文章,题目非常具有煽动性,而且锋芒毕露。他表示,他不会因为受到几个杂志编辑的鼓动,而贬低像Hibernate和Spring之类的框架,进而对EJB 3.0大唱赞歌。
Werner在其博客文章中杀气腾腾的表示,“作为一个精通企业架构和开发的人,我感觉到了这种不可避免的推动力,埋葬Hibernate和Spring,但是这就等于把一些非常好的工具扔到臭水沟里,而这只是为了继续Sun的帝国梦和JCP的领导地位。但是从企业的视角来看,它们不在乎你是否使用EJB 3.0、还是使用Spring或者Hibernate,对于架构师来说,全都是JEE。
显然在Werner看来,Hibernate和Spring还会有很好的发展。对于业界扬EJB 3.0而贬Hibernate和Spring的做法他很不以为然,那么在Werner看来,什么才是让JEE保持生命力的良丹妙药呢?
然后Werner抛出了他的惊人之言:“Ajax思想”
“Ajax”不是一种专属于任何一个公司的技术,甚至它连一个“实施指南”都没有。你可以使用任何你想使用的后端技术,使用任何你想要的持久性,甚至实施你自己的异步回调(call-back)和改进。Ajax唯一的事情是一系列非常重要的最好实践和模式,开发者可以使用它们来创建引人注目的Web客户端。为什么不让JEE更像Ajax呢?为什么在JEE模式还没有抛弃这些技术的时候,我们就朝着相关JCP技术发展呢?”
Hibernate真的被埋葬了吗?
Werner在其博客中称,他的评论已经引起了Gavin King(Hibernate项目和EJB 3.0规范的发明人)的抗议,称JBoss和JEE在模仿Hibernate的技术,King在Javalobby网站中贴出了自己的评论,他表示他没有看到Hibernate的项目如何被“埋葬”。
相反,EJB3.0给了我们更多的机会来把Hibernate和对象关系映射技术介绍给更广泛的人们,这在以前是不可能的。 我们应该感到幸运,我们可以随意使用任何超强的开源技术。
King还表示,在诅咒EJB3.0前,请真正看一下这个规范,把它与Hibernate比较一下。看一下它的实体管理器应用程序接口(EntityManager API)、看一下持久化模型、看一下查询语言。你认为这一些都是从哪儿来的呢?(是的,EJB3.0中的应用程序接口(API)不是与Hibernate中完全相同,不过它是一个正常的规范处理的修正部分。)
他继续表示到,Hibernate不会被埋葬,相反,它会变得更标准化,为了做到这一点,我们已经与其他重要的相关方进行了讨论并开展了实际的工作,尤其是和Sun和甲骨文。
这些工作进展的都非常顺利,更重要的是,对象相关性映射(ORM)现在已经通过正式的规范实现文档化了,就像Java从C++团队学习远程和管理事务一样。
King对Werner的博客文章的回应时说到:
“Ajax之所以存在,是因为它有一个标准-XmlHttpRequest。好的,假如你在真正的谈论Ajax框架,这就是这个空间还没有真正成熟的一个标志。成功的解决方案的要想出现,最终还是需要编写标准。现在Ajax框架依然是一种基本的誓言性技术”。
总结:在上面的争论中我们不难看出Brandon Werner一个Ajax思想的崇尚者,Gavin King是JCP规范的制定者,所以两个人这么激烈的争论就不足为奇了,其实焦点之处不是Ajax的问题,是人的问题,Sun公司拥有超强的开发团队是不容置疑的,但是超强的开发团队不一定会有超强的开发思想,Sun公司的后知后觉已为此付出沉重的代价,Hibernate的推出迫使Ejb3.0问世,JSF在还没有走向市场就夭折了,为什么现在流行的框架Struts,Spring,Tapstry等等却没有一个是Sun公司的,但却都是在Java的基础上建立起来的,我觉得在这些问题上是否会给Sun的高层们一些启示呢?
评论