今天下午赶到复旦大学三教去Ben Wang的JBoss讲座由于听讲座的人比较多教室临时从改到:分Ben在曹晓钢同学陪同下来的曹晓钢同学最辛苦上午去浦东机场接Ben
在讲座开始前和Ben进行了简单的交谈感觉Ben是个谦谦君子很有学者的气质实际上他也确实是PhD没有一点架子很平易近人很和蔼
Ben讲座要介绍的内容很多因此两个小时的演讲很紧凑讲座结束之后有几个朋友举手提问其中有个朋友的问题比较尖锐直接对准了EJB特别是Entity Bean而Ben的回答也坚定了我的一些观点这些下面再提到
提问结束以后论坛的几个版主我曹晓钢dlee和他的gfsmallduzigehf马伟和在IBM做consultant的nuke陪同Ben来到陆家嘴小南国吃饭实际上最后是由nuke埋单的饭桌上大家边吃边聊边向Ben请教问题我也借机问了很多关于JBossEJBHibernate方面的问题
由于Ben第一次来中国大陆于是晚餐后我们陪Ben逛了浦东的滨江大道眺望浦西外滩欣赏着名的上海滩夜景最后做鸟兽散了
Ben此次来华的主要目的就是想了解一下中国大陆香港地区和台湾地区对于JBoss的应用情况以及寻找合适的合作伙伴因此他比较关心JBoss在这些地区的应用状况我向他介绍了一些我了解的国内的应用JBoss应用Hibernate方面的现状向他提了一点点个人的见解
通过今天听Ben的讲座和Ben的交流我觉得收获很大
一方面是和JBoss Inc这样一个国际着名的Java Open Source组织有了近距离的接触和了解也许这样的机会可以促进中国的Java社区和国际Java社区更多的交流和合作同时对Java视线网站也是一个很好的提升
另一方面我了解了很多关于JBossHibernate方面的情况由于Ben是JBoss的core team成员之一因此很多情况从他嘴里说出我想应该是相当的准确了虽然这仅仅代表Ben自己一个人的想法不过我想也基本上可以代表整个JBoss Core Team的看法这一点也是我想向大家稍微详细介绍的地方
关于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是JEE规范中最失败的东西然而对数据库的操作又是一个软件项目最重要的部分如果连这部分都做不好软件还能做什么?晚餐的时候Ben也向我介绍他以前做项目也往往采用Session Bean去直接操作JDBC而不采用Entity Bean
相对于Entity Bean的失败Hibernate却得到了异乎寻常的关注从Ben的意思中似乎流露出JBoss Inc有意将Hibernate做为Java数据库持久层规范来推广的设想
另外由于Gavin King是JDO委员会成员Ben说从他那里了解的情况是现在JDO规范已经陷入了难产各个成员代表了不同公司的利益相持不下JDO在可以预见的将来无法发布JDO的未来已经蒙上了阴影
鑒于此JBoss在目前的阶段已经放弃了把JDO技术集成进来的设想而转为全面支持EJB规范而未来的EJB规范据他说将非常不同于现在的EJB我感觉JBoss似乎有点努力让Hibernate成为EJB规范中的一部分
而我问到既然Entity Bean是鸡肋的话而Hibernate也完全可以在CMP外面使用又何必要另外费时费力把Hibernate集成到CMP中做CMP的Engine呢?Ben回答是没有必要使用CMP的但是考虑到很多采用了CMP的老系统兼容问题考虑到为了保持和JEE规范的兼容问题所以才会这样做的这不是一个技术因素而是一个政治因素当然如果你觉得没有必要使用CMP你可以完全可以单独使用Hibernate
从Ben那里了解到的情况我觉得对于O/R Mapping未来的技术方向稍微有点眉目
) 当前的Entity Bean无疑是失败的未来的EJB中的Entity Bean也许会变成了像Hibernate的样子
) JDO的前景堪忧未来还遥遥无期至少JBoss已经放弃了对JDO的兴趣
) JBoss在力推Hibernate似乎有将Hibernate做为Java持久层标准规范的设想
在Ben看来开放源代码软件的竞争模式就是没有标准的大家都在竞争最后优胜者就成了标准现在Hibernate无疑是这方面的佼佼者有望成为事实上的标准
AOP的广泛应用
上次聚会gigix的AOP讲座我没有时间听这次Ben介绍AOP我得以有幸了解了AOP的基本概念从Ben介绍来看JBossAOP能够做的事情很多可以处理Log处理跨类调用的事务等等跨类调用的事务?呵呵这不是原来EJB的功能吗?这也是我的一个疑问如果AOP可以把容器管理事务Security检查分布式功能全部实现那么还要EJB干什么?毕竟AOP可以实现的功能是对POJO的而且是lightweight的无论编程调试部署和运行其难度都远远小于EJB而性能相当甚至更好于是我带着这个疑问请教Ben他的回答就是如果未来的发展AOP真的可以做到的话EJB确实就没有使用的必要了但是从现状来说有很多旧系统要兼容有Sun的JEE规范要兼容没有这个兼容认证可能很多企业就不会用JBoss了当然Ben没有否定EJB他说JBoss是在同时支持AOP和EJB的并且JBoss做为一个App Server要想被企业接受全面支持JEE标准是必要的
对于AOP和EJB的问题Ben的看法是也许在将来JEE规范将包括AOP否则也许JEE规范会逐渐被淘汰而JBoss的做法就是支持JEE规范支持EJB同时JBoss也支持AOP你如果想兼容JEE开发EJB那么OK如果你喜欢用AOP简化编程那么也OK
关于JBoss本身的发展
由于我对JBoss不是很熟悉因此在这方面也说不出来所以然印象比较深刻的两点是
) JBoss接受Venture Capital从JBoss Group改名为JBoss Inc做为一个商业公司开始运作了我觉得这是一个很好的事情软件要成功迟早要和商业化运作结合的
) 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领域里最主流的最有前途的应用最广泛的框架之一