明月松间照 清泉石上流


                                        ——— 兵临城下   猫科动物
posts - 70, comments - 137, trackbacks - 0, articles - 23
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

J2EE Development without EJB读后随笔

Posted on 2006-05-16 17:26 兵临城下 阅读(1631) 评论(8)  编辑  收藏

     这本书早就买了,放在那一直没看,最近才看了前五章。
     怎么说呢,总之前五章可以说是把EJB(特别是Entity bean)批的一无是处。说它有损OO的设计原则;EJB容器限制了OO的基本特征,说它只是个数据的收集器,而没有行为,不能称之为真正的对象。还有把持久化逻辑和远程模型都集成到这样的一个组件中,非常的不合理。EJB不能脱离容器而存在,带来测试的繁琐,……
        书中还分析了“ 经典”J2EE架构(petStore)的种种不是,我看下来,意思是:这种分布式的架构在现如今的企业应用中没有用武之地(至少没有必要),Web Server和Application Server的分离无异于作茧自缚(额外的远程调用的开销)。极力推崇Spring框架中使用POJO对象和Hibernate/JDO持久化机制。
       上述列出的EJB种种缺点(当然书中还有很多),我看了以后认为似乎还是有那么一点道理。我只是个使用者,当初使用EJB特别是Entity bean 确实给我带来了很多的便利,认为它彻底以组件形式解决了持久化问题,可以不用一句一句的JDBC了。但现在出来这么一本书以毫不客气的口吻将它批判如此体无完肤,真是让我有点心寒啊!我难道方向错了??
        我学J2EE已经有两年多了,不敢说我对EJB有多深的了解。然而读了这本书的一些说法后,觉得对EJB容器和EJB对象又有了新的认识(譬如EJB容器的申明式事务管理,资源池的管理等等)。不知道EJB是不是像它所说的那样差,Spring又是这样这样的好(我打算去看看),我现在不对这些多做评论,因为这不是我这样一个资历的人能够评论的,而且我对Spring不甚了解。

      现在开源的东西真是不得了!呵呵!


评论

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-16 20:15 by zkjbeyond
胡扯

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-17 10:19 by netfishx
就是胡扯

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-17 10:21 by 兵临城下
J2EE Development without EJB 胡扯?

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-17 23:36 by 鸟不生蛋蛋的地方
这本书后面几章挺好看

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-18 08:54 by 勇敢的心
他是理论上批判
你是实际上应用
根本不是用一个理念, 哪有矛盾嘛

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-18 09:13 by netfishx
书没胡扯,你胡扯

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-05-18 13:49 by 兵临城下
看了各位的评论,有点个人看法:
1、理论的批判和现实的应用
如果一个架构在理论上被人批判,那这个人必需得从应用的角度举出实例来支持他的观点。如果一个架构理论上都不行,那按照这个理论指导出的实践又能怎么样呢!
如果ROd Johnson只是在理论上对EJB进行了批判,我想那是毫无说服力的。而恰恰相反,他在书中对于同一Application,列举了四种架构,两种EJB架构,两种非EJB架构。从应用的角度(系统的资源开销、代码的可测试性、可维护性、组件模型和企业服务的整合(EJB容器)和分离(Spring)),以他的观点阐述了EJB架构的缺点和他强烈推荐的Sping架构的好处。如果说他只是理论上的批判,我认为不合适。

2、说我胡扯,我不知道我到底哪里不对了。我所列出的种种EJB的缺点,都是书中详细描述的(在看了sun最新发布的java EE5.0后,特别是EJB3.0确实对一些缺点做出了改进。可见他的一些批判还是很对的)。我的应用(EJB 让我体会到的实惠)只是在“经典”的J2EE的这个架构下实施的,不排除我“不识庐山真面目,只缘身在此山中”的原因。我并不是把我在EJB中得到的“快捷便利”,和Rod Johnson的理论批判混为一谈。
  
  要说原因,只能说是我没用过Sping,不知道他的架构是不是略胜一筹。都说不怕不识货,就怕货比货,只有你真正应用、比较才能得出你的真实体会。

# re: J2EE Development without EJB读后随笔  回复  更多评论   

2006-08-03 10:31 by Ronnie
其实无所谓ejb的好坏,关键是你怎么用他

3.0以前的entity bean是被人病诟的最多的了,sun的思路是好的,但是也许是实在太重量级了,90%的应用里开发人员完全可以选择hibernate,toplink这类更加轻巧灵活的持久化方案,而像entity bean提供的例如分布式事务处理之类的强大功能无异于屠龙之技,事实上要涉及到包含在一个事务里的多数据库操作的应用极少,就算有人家也都在用TUXEDO之类的成熟中间件技术。于是SUN吸取了教训,3.0的persistences 直接就实施于hibernate一系列持久化方案之上,至少我还觉得不错。

至于session bean,我倒现在也没看出来有太大的不好,Web Server和Application Server的分离在确实需要分布式计算的环境里有什么问题?
当然你的server端只是用来处理一些类如图书信息存储的简单工作,自然是没必要,但是如果你的server端跑着一个计算量极大的应用呢?

EJB是一个为组件化分布式计算而生的技术,和Spring为首的开源框架的目的是有差别的。站在一个用户的角度,你说哪个好,哪个差,不过是你自己的项目究竟适用哪种技术罢了。就好像你一个非常简单的web应用,你非要在server端的数据库调用的时候用web service,然后发现奇慢无比,然后骂web service是垃圾。web service说我怨啊....

当然我们也应该看到ejb也是不断发展和进步的,就好像ejb3.0里面,不也开始大量使用Spring引以为荣的依赖注入了么,同样我们也能看到AOP的身影在闪耀。

说到底,技术不过是用来解决问题的,纯粹为了技术而技术是李宇春的。



只有注册用户登录后才能发表评论。


网站导航: