没有策略性枪击,没有争议性投票,在我们享受五一长假的过程中,JDO2.0规范的首轮议会投票结束了。
自从2004年4月20日JDO2.0规范的制定流程(JSR243)开动以来,JDO又开始回到人们的视线中,并且在五一假期结束之前,规范的制定委员会成员陆续地进行了投票,以表达各自的支持程度,目前投票已经全部结束。下面列举一下投票结果,并在最后发表几点个人愚见。
下面先列举一下投票结果:
2004年4月30日,Sun公司投票支持JDO2.0,并发表了以下声明:
以上就是参与J2EE规范制定的16个武林帮派的投票结果(Borland弃权)。总的来说,是12票支持3票反对1票弃权,算是通过了。不过我们在反对的三票当中,可以琢磨出一些耐人寻味的东西:
Oracle在去年就对JDO一直怀恨在心,何解?Toplink也!因为JDO直接威胁了非标准的Toplink的市场,甚至有相当多的呼声要求Toplink出新版支持JDO的API,这样当然影响到Toplink已经锁住的众多企业用户。
IBM和BEA?多数中小规模的数据库应用并不需要象EJB这样复杂的体系,而JDO和其它一些轻量级的O/R映射技术正好填补这一空白,也许这一点决定了IBM和BEA的态度。两者是当前EJB市场的绝对两个大腕,安内必先攘外,在对EJB3.0进行积极支持并计划以最快速度占领市场的同时,碰到JDO这个可能会在企业数据库开发市场分一杯羹的新技术,二者当然会暂时摒弃前嫌,合力对付这样的异己。从这一方面来看,两个公司相互支持的胸怀值得景仰,完全不象抗日日期的国民党。话说回来,二者的态度最终还是为自己的利益服务的,这也是一个商业公司的基本原则,不过象BEA所指的JDO仅限于对象数据库范围的应用,就纯属无稽之谈了。
作为规范领导者,Sun的态度不言而喻。而JDO与JSP2.0可以更好地结合,使得页面制作人员可以简单地在HTML编辑器中完成动态数据的结合,Macromedia自然是双手赞成。
令人迷惑的是,一向主张在软件开发中以人为本的Borland此时为何保持缄默?难道它最近的动向是.NET?这里笔者也不便妄作揣测,只保持关注即可,一切的答案留给时间来公布。
下面我们来看看争论焦点的EJB3.0有些什么样的东西。
利用J2SE1.5提供的标注功能简化EJB描述符。J2SE1.5确实太伟大了,可以对类、方法、字段等等进行嵌入式的注解,这样,我们可以指望将来省掉所有的描述符、元数据之类的东西。尽管原来我们已经有XDoclet来帮助开发,但它对存储映射细节的描述毕竟只存在于源代码中,现在J2SE1.5的注解可以存在于编译好的类二进制代码中,真快哉!不过这一点完全不能证明JDO与EJB3.0发生了冲突,这只是另外一个范畴的改变,就象Intel又出了更高频率的CPU,JDO和EJB都可以享受一样,不能说明JDO与EJB发生冲突 提供更多的默认行为,这样可以有效减少配置工作量。这一点目前而言JDO已经比EntityBean做得好得多得多。 提供预定义的适配器类,减少开发人员需要实现的接口数目。在JDO中默认情况下你无需要实现任何接口,因此无法再减少。这方面可能不如EJB了? 更方便的JNDI处理。这是EJB本身的顽疾,这里不再评论。 无状态会话Bean的简化。这与JDO无关 对CMP实体Bean以及相关的EJBQL进行更好的支持。这是关键所在,也是与JDO所谓的冲突最集中的地方。EJBQL和JDOQL也许是两种不同的查询规范,但一定要将二者合而为一,还是将选择权留给用户?EJBQL只能静态配置,如何动态化还未有指望,这方面可以说目前无法与JDO进行冲突吧。 减少一些必须捕捉的异常。一些与业务逻辑无关的异常将转化为动态异常。这方面,目前JDO的涉及数据库操作的所有异常都已经被包装为动态异常,只有必要的情况下才需要捕捉。这也是EJB向JDO靠拢的一点体现。 性能调节的功能。这也与本文无关 其它一些专家组提出的改进。综上所述,我们看到JDO出现以来,Java数据库开发方面有了可喜的变化,大家不必局限于复杂的EJB,或者一些无法替代的现有O/R映射技术,而是有了新的,规范化的选择。这些结果都影响着整个业界,包括EJB。希望Oracle、IBM、BEA这几个Java界的巨头能够从用户出发,从实际出发,认真面对这一改变。
最后需要说明的是,笔者本人是JDO的支持者,但希望听到不同的声音。欢迎大家对此发表评论。(在http://theserverside.com/news/thread.tss?thread_id=25695上已经有很多网友进行评论了)
本译文的版权属于笔者本人,但欢迎转载,前提是注明出处和原作者。另外,欢迎在我的专栏中查看我的另几篇文章,并提出宝贵意见!
本文地址:http://com.8s8s.com/it/it16478.htm