EJB2.x已死(zt)

EJB2.x已死

EJB大势已去,指的是EJB2.x的那种重量级的EJB架构技术,而不是指全新的POJO based的EJB3.0。

其实围绕EJB这个话题,已经讨论的口水都干了,我在2002年的时候还是相当推崇EJB的,但是在当年的EJB项目中已经深切体会到了EJB的致命缺陷。到2003年基本上对EJB持一个谨慎的态度,即支持Session Bean,反对Entity Bean,然而仅仅就是这种谨慎的置疑态度已经遭到全面的疯狂围攻和人身攻击。2004年以后,可以说EJB2.x在IT行业已经得到了绝大多数公司的共同否定和抛弃,特别是EJB3.0 SPEC的发布,已经完全是另外一个东西,只不过披着EJB的外衣而已。EJB专家组对EJB2.x模型的彻底抛弃,已经宣判了EJB2.x的死刑,现在唯一不确定的只不过是EJB2.x还能苟延残喘多久的问题而已。

昨天我和jlinux约nuke吃饭,谈一些出版的事情,席间谈到一些技术上面的话题。nuke是IBM公司的technical Consultant,一向负责IBM对金融行业的业务。我和nuke上次见面还是在今年4月份JBoss Core Team的Ben Wang访华的饭桌上。我还记得上次我们席间也谈到EJB的话题。大家,包括Ben对Entity Bean否定态度都是一致的,所不同的就是对Session Bean在分布式业务上的作用而已,当时nuke提到他接触过的一些业务又大规模的EJB集群的,几百台的EJB集群。

然而这次聚会,nuke却提到一个非常令我吃惊的消息,他说现在即使在IBM面向客户的业务中,也已经没有EJB的位置了,EJB成了一个典型的反模式。他还特别提到,他们的很多客户,例如新加坡客户首先就会问你项目用了EJB没有,如果用了EJB,那么我们不要,如果没有用EJB,OK,pass。

这个消息对我来说还是非常吃惊的,我没有想到EJB现在市场萎缩的这么厉害,我还以为EJB2.x还只是在开发人员当中被大面积的抛弃,在大客户的应用中还将生存很久的时间,现在连IBM的客户都已经态度鲜明的拒绝EJB了,这是非常可怕的事实,这说明了EJB2.x现在已经没有任何市场了,宣告EJB2.x事实上的彻底死亡。

可笑的是,国内的某些个别人,出于不可告人的,为了谋求个人金钱利益的目的,不遗余力的鼓吹EJB2.x,毁人不倦的误导可怜的Java初学者。当这些Java初学者将很快发现他们花了不菲的培训费之后,只学到了一堆报废的知识,甚至被人为的,有目的的引入了歧途,到那个时候,被欺骗了的人们将如何宣泄他们的愤怒呢?让我们拭目以待吧。

又是一个不懂EJB的东施效颦。4年后的今天也不知道谁更愤怒,EJB2到EJB3到EJB999,其分布式组件核心永远变,良好伸缩性是EJB从诞生开始就具备优势。

EJB实体Bean性能失败完全是误用导致,如果继续你的数据库驱动设计思维,不改变到OO思维比如DDD设计上来,同样性能失败也会发生在Hibernate上,本站也有大量对hibernate性能的怀疑。
当然,不可否认EJB2实体也可能存在一些缺陷,所以现在和Hibernate等ORM合并为JPA。

你不学好EJB2.X原理,一上来就用EJB3,好像初期很简单,到后来那些核心问题还是回避不了。
[该贴被banq于2008-09-24 14:32修改过]

THIS MESSAGE HAS BEEN MASKED