EJB3.0和吵闹的TSS年会

                彭晨阳
   本月Java界最令人鼓舞的事,莫过于EJB 3.0雏形已定,2004年5月6日,EJB总设计师Linda DeMichiel在吵闹的TSS年会上(http://www.theserverside.com/symposium/)首次公布了EJB 3.0的重大改变。
   EJB 3.0总体目标是易于开发。自从EJB 1.0出来后,曾经遭受了很多人的抨击,后来总算推出EJB 2.0,改正了以前不少问题,特别是性能问题,但是和.NET相关技术相比,EJB难于学习和使用已经成为EJB或J2EE发展壮大的致命危险。
   在这个关键时刻,EJB标准委员会经过9个多月的努力,听取了各方面意见,特别吸取了开源领域的轻量编程模型思想,推出了EJB3.0新构想,EJB 3.0最主要有以下几个特点:
   首先易于开发使用,目前的EJB对于程序员来说是重量的,因为程序员建立一个EJB需要很多步骤:建立几个接口文件和一个配置文件。
在EJB3.0中,建立一个Session bean将会非常简单,如下:
@Session public class HelloWorldBean {
   public void sayHello (String s) {
      System.out.println(“Hello:”+s);
   }
}
   其次,引入Dependency Injection 模式(一种新的Ioc模式,也是AOP基础模式)替代了JNDI的LookUp,这样使得在EJB容器外测试程序变得更加容易。
   最后是简化了持久层实体Bean CMP,现在EJB中的实体Bean CMP因为重量且复杂被很多程序员指责甚至攻击,因此,开源项目Hibernate成为很多程序员的新宠儿,EJB 3.0吸取了Hibernate和TopLink轻量特点,简化了CMP,从而使得EJB 3.0的CMP足以在持久层技术和Hibernate之类ORM产品形成了竞争。
   Gavin King通过Hibernate启动了J2EE持久层技术的选择之争,Gavin King最近在他的Blog(http://blog.hibernate.org/cgi-bin/blosxom.cgi/)中又对JDO发动了“无情的批判”,他认为JDO存在很多缺点,需要重写,但是相比重写JDO, EJB 3.0 的实体Entity 更接近ORM解决方案。同时,三个主要的J2EE应用服务器厂商(BEA, IBM和Oracle) 都拒绝了JDO 2.0。这些厂商认为:EJB3.0应该实现更简单的持久层模型,对于J2EE没有必要使用另外一套持久层模型。(因此,CMP将继续成为EJB 3.0的持久技术,实体Bean Entity Bean将被继续保留)
   Gavin King本人目前效力于JBoss组织,从事JBoss的CMP引擎优化工作,从一个方面说,他同时也正把他在持久层技术上出色的才智贡献到CMP标准实现上。虽然Hibernate没有成为EJB 3.0持久层标准层技术,但是,Gavin King本人无疑是最值得尊敬和崇拜的。
   有关EJB 3.0热烈讨论目前还不断在继续,英文讨论可见TSS的专门网址:http://www.theserverside.com/news/thread.tss?thread_id=25779,中文讨论可见:http://www.jdon.com/jive/article.jsp?forum=16&thread=13853。
   在EJB 3.0雏形公布之前,Java社区盛行各种排斥EJB的思想和言论,其中不乏各种原因,其中一个主要原因是,EJB产品曾经是昂贵和贵族的代名词,而EJB标准委员会主要成员是世界上除微软以外的最大几个软件厂商,开源社区的矛头是直接指向这些商家。甚至EJB的开源项目JBoss也未被幸免,被一些极端粉子讥讽为傀儡。
  Rod Johnson是反EJB方面一个代表人物,他创建了著名的开源项目Spring,这个基于AOP的开源框架最终目标是取代EJB,Rod Johnson在这次TSS年会专门开办了讲座:J2EE without EJBs,目前Tomca+Spring+Hibernate逐渐成为J2EE开发者偏好的一种架构选择。
  其实,现在的EJB难于使用是促使现在的程序员另结新欢的主要原因,也许EJB标委会注意到了这个问题,因此同样也在这次年会上首次公布了EJB 3.0雏形,这总算让EJB支持者大舒了一口气,他们也发表了自己的看法,见下列网址:http://radio.weblogs.com/0135826/2004/05/09.html#a27。
  所以,这次TSS年会也算开得惊心动魄,Java社区各种思潮都集中在这里碰撞,当然,这些对于喜欢清静的一些国人看来可能过于喧闹,特别是那些在Java门口观望的程序员可能感到担心,是不是Java技术有问题啊,怎么没有一个让人可以放心选用的技术啊?是否可以等到Java社区争论完毕,再进入Java世界呢?
  其实,这是一种误解,没有完美的技术,只有合用的技术,争论代表活力和希望,Java社区的吵闹正体现了Java世界的开放和自由,在Java社区,开发者可以真正自己当家作主,可以自己根据实际情况选择适合自己的技术,难道你愿意放弃这种自主的选择权吗?
直接来源:【J道】http://www.jdon.com/artichect/EJB3.0.htm