自从协议签过以后,在合肥和南京的这段时间我没买任何书,也没订任何杂志,因为与其买了带到北京来,不如到北京来再买。加上到了北京的前几天都在适应环境,也没顾的上这桩子事。算算看来已经有四个月没看<<程序员>>了,<<程序员>>的很多概念已经在我脑海中淡化了,(天哪,这样不好!),前两天遇到潘加宇,居然问他“你有没有给<<程序员>>写过文章?”话一问出来连我自己都觉得搞笑!潘加宇早就是<<程序员>>的专栏作家了!幸好我们当时没吃米饭,否则肯定两个人对喷。
为了不再丢人,我一口气把几个月的<<程序员>>都买了,好好补补血。遗憾的是我还是没有逃脱我不喜欢的论调和文章,就是那种看过了特别想把刚才吃的都吐出来的那种文章。比如2005年第二期的杂志就有这样一篇文章。这篇文章的大意是说原本很被技术界看好的JDO 2.0标准被很多大公司集体否决了,所以就认为商业政治谋杀了技术标准,而事实上是,这篇文章的作者根本就没有搞清楚这场纷争背后的意义。
先让我们来看看JCP投票的情况:
从实际情况上来看,好像是和EJB的利益有关的人都投了反对票,希望技术开放和公平竞争的人都投了赞成票,于是那篇文章的作者就得到一个结论:大公司们希望自己的服务器硬件和应用服务器能卖上好价钱,所以就谋杀了JDO 2.0。为澄清这个问题,我同那篇文章的作者采取同样的方法——考察故事的背景。在java社群里最闪耀的O/R mapping明星有两个:JDO和Hibernate。他们互为竞争对手,将java的O/R mapping工具集划分为两个阵营,而他们共同的竞争对手又是EJB 2.x中的entity bean。这场战争是三大技术标准的公平较量,或者可以说成是封建贵族、改良派新贵族和革命派之间的较量,战争的结局众人皆知——Hibernate获得了最高的荣誉和程序员心目中的领导地位,JDO虽不可与之并驾齐驱,但也差不到哪去,培养了一群重视粉丝,而臭名昭著的entity bean则被列入“不推荐使用(或推荐不使用)的技术名单”,挂上“战败国”的牌子。
下面我沿用那篇文章作者的用语“商业政治”。商业政治家们觉得Hibernate作为一种开源软件确实不是其大规模推广的最好方式,(假如Hibernate能加入Apache或Eclipse之类的社群兴许好一些),而他又确实很棒,所以为Hibernate争取一个适当的名分让其继续统治者的地位是迫在眉睫的事。注意,这里并不是说商业政治家们有多高尚,相反,作者也觉得他们都长着一副丑陋的像铜钱一样的面孔,可是作者同时也相信他们永远都会把股东放在第一,客户放在第二,而把程序员放在第三。当IBM/SAP等意识到自己所提供的高端软件中有一部分不如开源产品他们会立即得到客户的抱怨声,如来自BMW和Citibank的声音,他们会立即用尽三十六计以提升这部分产品的竞争力。这次商业政治家们采用的方法是“挖人”!将Hibernate的老大挖到EJB来,鼓励他创新,分阶段的抛弃EJB 2.x的一些设计,在EJB 3.0中集成Hibernate的思路,以求为客户提供唯一的也是目前最好的解决方案,要知道,技术界的很多成本都耗在了技术分歧上面。此时的JDO还在第二名的花环中沾沾自喜,可当他发现本次比赛的三个人在下次比赛中将变成两个人时他立即意识到“第二名=最后一名”!这就好像苏联吞并和很多战败国,这让盟军十分恼火。JDO决定推出2.0版以适应形式的需要,但是这个决定在前面提到的投票中被否决了。
原因很简单,我们不需要两个相同程度80%的规范在市场上并行,这为很多产品带来了更多的成本。除非JDO 2.0从另一个角度切入市场,并在规范中澄清如何解决其与EJB 3.0的竞争,否则不能标准化。那篇文章的作者认为这是因为大公司希望自己价格昂贵的应用服务器能继续出售,所以才否决JDO 2.0,我不知道他如何得到这个诡异的想法。事实上商业策略往往是不随技术标准而变化的,即使这个世界上从来没有过EJB 3.0,也没有Hibernate,IBM也一样能把他的小型机+AIX+WebSphere卖出去!而倘若他同时批准了EJB 3.0和JDO 2.0,那就更好了,IBM现在可以提供两套产品了,业务面岂不是更广,要知道,对IBM来说真正的核心客户是不会在乎IBM的应用服务器有几种的,他们依然照单全收!比如BMW和Citibank。而大企业们这样做恰恰是为了维护市场的稳定,减轻客户CIO和IT部门的压力,他们否决JDO 2.0的出台也正是希望EJB 3.0系列产品能抢先占领市场,让昨日的山大王真正成为明日的技术皇帝!
最后,模仿那位作者,让我们来回顾一下谁投了赞成票,以及他们的出发点:1。Apache,在java的战场上,apache永远都是赢家,因为他根本就是在扮演一个军火商的角色,无论谁赢谁输都得大量使用apache的组件构建商业平台。而作为java社群的领导者之一,apache相信技术的对立面越多,技术本身就会越繁荣,java不能结束世界大战的局面。2。Apple,这种分歧跟他基本没什么关系。但机遇对于苹果通常都会比对于其它同等规模的企业要重要一些。3。Borland,一直希望能在应用服务器市场上分一杯羹。事实上除了VB以外的任何一种开发类标准对borland都是有吸引力的。4。Doug Lea先生,作为java社群领导者中的自然人之一,“平等竞争”是个很重要的学术话题。5。Sun,稍稍读一些IT发展史就会知道,Sun从来就不是商业路线的成功者。
总结起来,那篇文章犯了两个基本的逻辑错误:1。其作者本能的以为老企业一定会维护老产品的权威,却没有意识到这一次JDO的竞争对手不是上一次圣战的战败国,而是一个拥有Hibernate血统的全新的EJB 3.0。2。开放和竞争确实对技术的发展很有好处,可是“过度竞争”却会违反“客户利益至上”的经济学不二法则。这使我想起了我曾经有幸聆听了北大光华的一位院长的讲座,他告诉我们“垄断有效率损失,竞争一样有效率损失”,不能用单一的标准来衡量人类社会的每一个角落。
经济学出身的泡泡
These are the final results of the Public Review Reconsideration Ballot for JSR #243. The Executive Committee for SE/EE has approved this ballot.