服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

参加4月4日ben wang的jboss讲座纪实


  今天下午赶到复旦大学三教3108去ben wang的jboss讲座。由于听讲座的人比较多,教室临时从3209改到3108,2:30分,ben在曹晓钢同学陪同下来的,曹晓钢同学最辛苦,上午去浦东机场接ben。
  
  在讲座开始前,和ben进行了简单的交谈,感觉ben是个谦谦君子,很有学者的气质,实际上他也确实是phd,没有一点架子,很平易近人,很和蔼。
  
  ben讲座要介绍的内容很多,因此两个小时的演讲很紧凑,讲座结束之后,有几个朋友举手提问,其中有个朋友的问题比较尖锐,直接对准了ejb,特别是entity bean,而ben的回答也坚定了我的一些观点,这些下面再提到。
  
  提问结束以后,论坛的几个版主,我,曹晓钢,dlee和他的gf,smallduzi,gehf,马伟,和在ibm做consultant的nuke陪同ben来到陆家嘴小南国吃饭,实际上最后是由nuke埋单的。饭桌上大家边吃边聊,边向ben请教问题,我也借机问了很多关于jboss,ejb,hibernate方面的问题。
  
  由于ben第一次来中国大陆,于是晚餐后我们陪ben逛了浦东的滨江大道,眺望浦西外滩,欣赏著名的上海滩夜景,最后做鸟兽散了。
  
  ben此次来华的主要目的就是想了解一下中国大陆,香港地区和台湾地区对于jboss的应用情况,以及寻找合适的合作伙伴。因此他比较关心jboss在这些地区的应用状况,我向他介绍了一些我了解的国内的应用jboss,应用hibernate方面的现状,向他提了一点点个人的见解。
  
  通过今天听ben的讲座和ben的交流,我觉得收获很大:
  
  一方面是和jboss inc这样一个国际著名的java open source组织有了近距离的接触和了解,也许这样的机会可以促进中国的java社区和国际java社区更多的交流和合作,同时对java视线网站也是一个很好的提升。
  
  另一方面我了解了很多关于jboss,hibernate方面的情况。由于ben是jboss的core team成员之一,因此很多情况从他嘴里说出,我想应该是相当的准确了,虽然这仅仅代表ben自己一个人的想法,不过我想也基本上可以代表整个jboss core team的看法。这一点也是我想向大家稍微详细介绍的地方:
  
  1、关于entity bean和hibernate的争论
  我是一个entity bean的坚决反对者。围绕entity bean的话题,在国内也是众说纷纭,我去年夏天曾经就这个问题和很多人反复辩论过,由于坚决反entity bean,坚持o/r mapping,特别是hibernate的态度,最后被很多人围攻,这也直接导致了现在java视线论坛的诞生。
  
  对于jboss这样一个全面支持ejb的java application server来说,了解jboss core team对ejb,特别是对entity bean的态度,是我比较关心的事情。
  
  ben在讲座提问的时候就表明,entity bean是j2ee规范中最失败的东西,然而对数据库的操作又是一个软件项目最重要的部分,如果连这部分都做不好,软件还能做什么?晚餐的时候,ben也向我介绍,他以前做项目,也往往采用session bean去直接操作jdbc,而不采用entity bean。
  
  相对于entity bean的失败,hibernate却得到了异乎寻常的关注。从ben的意思中似乎流露出jboss inc有意将hibernate做为java数据库持久层规范来推广的设想。
  
  另外由于gavin king是jdo委员会成员,ben说从他那里了解的情况是,现在jdo2.0规范已经陷入了难产,各个成员代表了不同公司的利益,相持不下,jdo2.0在可以预见的将来无法发布,jdo的未来已经蒙上了阴影。
  
  鉴于此,jboss在目前的阶段已经放弃了把jdo技术集成进来的设想,而转为全面支持ejb3.0规范。而未来的ejb3.0规范据他说将非常不同于现在的ejb2.0,我感觉jboss似乎有点努力让hibernate成为ejb3.0规范中的一部分。
  
  而我问到既然entity bean是鸡肋的话,而hibernate也完全可以在cmp外面使用,又何必要另外费时费力把hibernate集成到cmp中,做cmp的engine呢?ben回答是没有必要使用cmp的,但是考虑到很多采用了cmp的老系统兼容问题,考虑到为了保持和j2ee规范的兼容问题,所以才会这样做的。这不是一个技术因素,而是一个政治因素。当然如果你觉得没有必要使用cmp,你可以完全可以单独使用hibernate。
  
  从ben那里了解到的情况,我觉得对于o/r mapping未来的技术方向,稍微有点眉目:
  1) 当前的entity bean无疑是失败的,未来的ejb3.0中的entity bean也许会变成了像hibernate的样子
  2) jdo的前景堪忧,未来还遥遥无期,至少jboss已经放弃了对jdo的兴趣
  3) jboss在力推hibernate,似乎有将hibernate做为java持久层标准规范的设想
  
  在ben看来,开放源代码软件的竞争模式就是没有标准的,大家都在竞争,最后优胜者就成了标准,现在hibernate无疑是这方面的佼佼者,有望成为事实上的标准。
  
  2、aop的广泛应用
  上次聚会gigix的aop讲座我没有时间听,这次ben介绍aop,我得以有幸了解了aop的基本概念。从ben介绍来看,jbossaop能够做的事情很多,可以处理log,处理跨类调用的事务,。。。。。。等等,“跨类调用的事务?”,呵呵,这不是原来ejb的功能吗?这也是我的一个疑问。如果aop可以把容器管理事务,security检查,分布式功能全部实现,那么还要ejb干什么?毕竟aop可以实现的功能是对pojo的,而且是lightweight的,无论编程,调试,部署和运行,其难度都远远小于ejb,而性能相当甚至更好。于是我带着这个疑问请教ben。他的回答就是,如果未来的发展,aop真的可以做到的话,ejb确实就没有使用的必要了。但是从现状来说,有很多旧系统要兼容,有sun的j2ee规范要兼容,没有这个兼容认证,可能很多企业就不会用jboss了。当然ben没有否定ejb,他说jboss是在同时支持aop和ejb的,并且jboss做为一个app server,要想被企业接受,全面支持j2ee标准是必要的。
  
  对于aop和ejb的问题,ben的看法是也许在将来j2ee规范将包括aop,否则也许j2ee规范会逐渐被淘汰。而jboss的做法就是支持j2ee规范,支持ejb3.0,同时jboss也支持aop。你如果想兼容j2ee开发ejb,那么ok,如果你喜欢用aop简化编程,那么也ok。
  
  3、关于jboss本身的发展
  由于我对jboss不是很熟悉,因此在这方面也说不出来所以然。印象比较深刻的两点是:
  
  1) jboss接受venture capital,从jboss group改名为jboss inc,做为一个商业公司开始运作了。我觉得这是一个很好的事情,软件要成功,迟早要和商业化运作结合的。
  
  2) jboss要成为一个java open source project的社区,不断的吸收适合自己发展需要的java open source project,共同推进opensource事业的发展。
  
  通过这次交流,我想包括我本人在内,对hibernate的信心都无疑得到了巨大的加强。我虽然反对entity bean,对jdo标准也一向没有好感。但是我从来没有想过hibernate有成为o/r mapping标准的可能性,我只是一惯认为,hibernate是一个很好用很实用的东西,在项目中使用可以节省巨大的人力,可以让你的oo编程变得很舒服。就是现在我也不认为hibernate会成为o/r mapping的事实标准,如果有一天有更好的o/r mapping框架出现,我也会毫不犹豫的喜新厌旧。不过毫无疑问的是,hibernate必将成为java o/r mapping领域里最主流的,最有前途的,应用最广泛的框架之一。

扫描关注微信公众号