EJB3.0和吵闹的TSS年会

彭晨阳

   本月Java界最令人鼓舞的事,莫过于EJB 3.0雏形已定,200456日,EJB总设计师Linda DeMichiel在吵闹的TSS年会上(http://www.theserverside.com/symposium/)首次公布了EJB 3.0的重大改变。

   EJB 3.0总体目标是易于开发。自从EJB 1.0出来后,曾经遭受了很多人的抨击,后来总算推出EJB 2.0,改正了以前不少问题,特别是性能问题,但是和.NET相关技术相比,EJB难于学习和使用已经成为EJBJ2EE发展壮大的致命危险。

   在这个关键时刻,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基础模式)替代了JNDILookUp,这样使得在EJB容器外测试程序变得更加容易。

   最后是简化了持久层实体Bean CMP,现在EJB中的实体Bean CMP因为重量且复杂被很多程序员指责甚至攻击,因此,开源项目Hibernate成为很多程序员的新宠儿,EJB 3.0吸取了HibernateTopLink轻量特点,简化了CMP,从而使得EJB 3.0CMP足以在持久层技术和Hibernate之类ORM产品形成了竞争。

   Gavin King通过Hibernate启动了J2EE持久层技术的选择之争,Gavin King最近在他的Bloghttp://blog.hibernate.org/cgi-bin/blosxom.cgi/)中又对JDO发动了“无情的批判”,他认为JDO存在很多缺点,需要重写,但是相比重写JDO EJB 3.0 的实体Entity 更接近ORM解决方案。同时,三个主要的J2EE应用服务器厂商(BEA, IBMOracle) 都拒绝了JDO 2.0。这些厂商认为:EJB3.0应该实现更简单的持久层模型,对于J2EE没有必要使用另外一套持久层模型。(因此,CMP将继续成为EJB 3.0的持久技术,实体Bean Entity Bean将被继续保留)

   Gavin King本人目前效力于JBoss组织,从事JBossCMP引擎优化工作,从一个方面说,他同时也正把他在持久层技术上出色的才智贡献到CMP标准实现上。虽然Hibernate没有成为EJB 3.0持久层标准层技术,但是,Gavin King本人无疑是最值得尊敬和崇拜的。

   有关EJB 3.0热烈讨论目前还不断在继续,英文讨论可见TSS的专门网址:http://www.theserverside.com/news/thread.tss?thread_id=25779,中文讨论可见:http://radio.weblogs.com/0135826/2004/05/09.html#a27

  所以,这次TSS年会也算开得惊心动魄,Java社区各种思潮都集中在这里碰撞,当然,这些对于喜欢清静的一些国人看来可能过于喧闹,特别是那些在Java门口观望的程序员可能感到担心,是不是Java技术有问题啊,怎么没有一个让人可以放心选用的技术啊?是否可以等到Java社区争论完毕,再进入Java世界呢?

  其实,这是一种误解,没有完美的技术,只有合用的技术,争论代表活力和希望,Java社区的吵闹正体现了Java世界的开放和自由,在Java社区,开发者可以真正自己当家作主,可以自己根据实际情况选择适合自己的技术,难道你愿意放弃这种自主的选择权吗?

 

Java企业系统架构选择考量

JBoss 5迎来Java的彻底的可配置时代

Simplify the Best:轻量框架

Ioc模式(又称DI:Dependency Injection)

IOC模式的思考和疑问

关于SPING与EJB的胡言乱语--重和轻永恒的话题

EJB3与EJB2架构对比

面向对象与领域建模

 

更多POJO专题

更多依赖注射专题

更多AOP专题

更多Annotation专题

更多EJB3专题

EJB专题

进入相关讨论