B Day(The Big Day) 评JDO2通过投票

原创 2005年03月02日 15:40:00

B Day(The Big Day) JDO2通过投票

 

JDO2228日通过了JCP( Java Community Process)执委会的第二轮投票,在没有反对票的情况下成为一个正式的JCP标准。让我们记忆犹新的是就在一个月前的第一轮投票中,JDO2在多达10个反对票中未能获得通过。这个戏剧性的转变是如何发生的呢?

 

首先看看不久前Java社区的技术政治的角力。EJB2的复杂度使它被java用户和开发社区所诟病和不能广泛的被应用。随着JDO的出现,EJB厂商看到了威胁,也面临选择。JDO标准采用的不依赖容器的POJO模型来实现映射和数据持久比起EJB2在开发的简便和可测试性上远远超出。这种技术上的超越使EJB厂商处在了一个很尴尬的局面。

 

一直以来,EJB2都是J2EE架构中标准的数据持久层,EJB厂商依靠EJB对容器的依赖性使用户帮定在昂贵的EJB服务器(Application Server)产品上而赚取高额利润。如果EJB技术

被超越和放弃,对目前的EJB厂商的冲击就是巨大的。那EJB厂商能不能接受并转向JDO标准呢?很遗憾,是不可行的。原因当然不是技术性的,如果转向JDO,意味着EJB厂商需要承认自己在技术上的劣势并和新兴的JDO厂商分享企业级数据持久层市场。这显然不是EJB厂商所乐见得。升级EJB并维持EJB的企业数据持久层标准的地位是EJB厂商唯一能走的路了。

 

但如何升级EJB呢?基于Plain Old Java Object( POJO)模型的对象关系映射和持久已经成为Java业界的共识,EJB也只能往JDO同样的方向发展,而和具备丰富POJO模型经验和完整APIJDO厂商相比,EJB厂商显然缺乏这方面的知识和经验积累。这个时候Hibernate被选中了。利用Hibernate作者和JDO标准专家组相处不愉快,主要由EJB厂家组成的     EJB专家组很快的将Hibernate作者吸收并将Hibernate做为了EJB3初稿的实现基础。这对JBoss/Hibernate是一个巨大的机会,使得JBoss从排在EJB厂商第四把交椅一下成为EJB3标准的领头羊,同时也把JBoss/iHiHIHibernate推到了和JDO开发社区论战的前线。但JBoss/Hibernate在论战和宣传上散布的关于JDO2的不实言论或多或少对JBoss/Hibernate的形象起到了负面作用。

 

原来的EJB巨头们则保持着低调和沉默,暗中则在向SunJDO专家组施加压力,希望能实现EJB3JDO2的合并,避免JDO2标准对未来企业数据持久市场的竞争。在各方角力的结果,2004年九月JDO专家组和EJB3专家组联合签署发布了一封公开信,承诺将互相协同,共同制定新的java通用数据持久层标准,同时6JDO专家组成员被吸收进EJB3专家组共同制定EJB3和新的java通用数据持久层标准。

 

从技术的层面上比较, JDO2EJB3的数据持久模型很类似,功能也类使,主要的差别在于对象/关系映射的语法和默认的查询语法。但JDO2已经是一个成熟的API,并且有30家以上的厂商支持该标准和相当的用户群体,而EJB3还处在草稿阶段。技术的成熟度和时间先进上JDO2都领先于EJB3

 

综合这些背景因素,JDO2在第一轮的投票中被执委会(JCP执委会中主要是EJB厂商)高票否决就既在意料之外,也在意料之中。意料之中的是EJB厂商显然是不喜欢对已经形成垄断的EJB市场会造成冲击的JDO标准,意料之外的是执委会中的EJB厂商似乎忘记了作为JCP执委会成员的义务和责任(10票反对没有一票基于技术理由),为了自己的市场利益封杀一个极具竞争力的候选标准。

 

如果这个事件发生在5年前,还习惯于被厂商牵着走的开发社区和用户也许也就接受了。但在开发社区日益成熟的今天,开发人员和用户已经认识到所谓的标准不应该是由厂商为了自己的发展和利益为驱动来制定,而是开发人员和用户的需求来推动。

 

JDO已经存在和发展了2年,虽然JDO的开发社区比起开源的Hibernate小,但JDO在商业用户特别是高端用户的积累则比Hibernate要多,特别是在银行,电信,政府等需要完善服务和支持的项目中,JDO厂商获得了相当的市场。当JDO2第一轮投票被否决的消息发布后,责问JCP委员会的电子邮件潮水般涌到,批评JCP执委会为私利做出的政治性投票。而红工场的JDO用户也响应号召,发出了呼吁邮件。其中很多的邮件也发给了JDO专家组(有些用户不清楚JCP执委会和JDO专家组的区别),笔者有幸看到几封,其中的言辞不可谓不激烈。

 

在开发社区特别是用户(很多的JDO高端用户往往也是EJB服务器的用户)的压力下,也在Sun, ApacheJDO支持厂商/组织的协调下,才有了JDO2在第二轮投票的顺利通过。

 

这是一个非常令人的欣喜的结果,更重要的是它是JCP历史上第一次开发社区和用户充分参与标准制订过程中,并在关键的时候发出自己的声音,维护开发社区和用户的自己的利益。这个先例的大概也将鼓励更多的厂商,用户和开发人员加入JCP,积极参与标准的制定,推动Java社区的公平竞争和繁荣。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章推荐

Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) B. Bash's Big Day 数论+贪心

题意:给出n个数,选出尽可能多的数,使这些数的gcd不是1. 数论+贪心 选出尽可能多的数,使这些数的gcd不是1.,则它们的gcd是x,x >= 2, 所以可以枚举gcd的值,从2到1e5,然后枚举...

Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) -- B. Bash's Big Day (唯一分解定理)

大体题意: 给你n 个数,让你选出尽可能多的数来,使得gcd(x1,x2,x3,,,xn) != 1; 输出最大数量? 思路: 思路比较偏比较麻烦,参考一下把! gcd不是1的话,说明它们有共...

Codeforces 757B Bash's Big Day math, number theory

B. Bash's Big Day time limit per test 2 seconds memory limit per test 512 megabytes ...

Codeforces 757B Bash's Big Day【线性筛】

B. Bash's Big Day time limit per test 2 seconds memory limit per test 512 megabytes input...

Codeforces 757B Bash's Big Day 【数论】

本题链接:http://codeforces.com/contest/757/problem/B 题目大意:有 n 个数,问有不为1的公因数的数最多是几个。 思路: 将这 n 个数所有的...

cf 757B Bash's Big Day

题目链接:http://codeforces.com/problemset/problem/757/B B. Bash's Big Day time limit per test ...

CF - 757B. Bash's Big Day - 贪心+暴力

1.题目描述: B. Bash's Big Day time limit per test 2 seconds memory limit per test 512 m...

codeforces 757 B. Bash's Big Day

B. Bash's Big Day time limit per test 2 seconds memory limit per test 512 megabytes input stan...

codeforce B. Bash's Big Day

Bash has set out on a journey to become the greatest Pokemon master. To get his first Pokemon, he we...

Codeforces Round #391 -B. Bash's Big Day

题目链接 题目大意: 给你n个数,问最大的gcd不为1的集合大小。把gcd都变成素因子。 先筛选素数,统计包含素因子的数的个数。 有几个剪枝: 1.如果是1直接跳过 2.如果是素数直接加1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:B Day(The Big Day) 评JDO2通过投票
举报原因:
原因补充:

(最多只允许输入30个字)