自從協(xié)議簽過以后,在合肥和南京的這段時(shí)間我沒買任何書,也沒訂任何雜志,因?yàn)榕c其買了帶到北京來,不如到北京來再買。加上到了北京的前幾天都在適應(yīng)環(huán)境,也沒顧的上這樁子事。算算看來已經(jīng)有四個(gè)月沒看<<程序員>>了,<<程序員>>的很多概念已經(jīng)在我腦海中淡化了,(天哪,這樣不好!),前兩天遇到潘加宇,居然問他“你有沒有給<<程序員>>寫過文章?”話一問出來連我自己都覺得搞笑!潘加宇早就是<<程序員>>的專欄作家了!幸好我們當(dāng)時(shí)沒吃米飯,否則肯定兩個(gè)人對(duì)噴。
為了不再丟人,我一口氣把幾個(gè)月的<<程序員>>都買了,好好補(bǔ)補(bǔ)血。遺憾的是我還是沒有逃脫我不喜歡的論調(diào)和文章,就是那種看過了特別想把剛才吃的都吐出來的那種文章。比如2005年第二期的雜志就有這樣一篇文章。這篇文章的大意是說原本很被技術(shù)界看好的JDO 2.0標(biāo)準(zhǔn)被很多大公司集體否決了,所以就認(rèn)為商業(yè)政治謀殺了技術(shù)標(biāo)準(zhǔn),而事實(shí)上是,這篇文章的作者根本就沒有搞清楚這場(chǎng)紛爭背后的意義。
先讓我們來看看JCP投票的情況:
從實(shí)際情況上來看,好像是和EJB的利益有關(guān)的人都投了反對(duì)票,希望技術(shù)開放和公平競爭的人都投了贊成票,于是那篇文章的作者就得到一個(gè)結(jié)論:大公司們希望自己的服務(wù)器硬件和應(yīng)用服務(wù)器能賣上好價(jià)錢,所以就謀殺了JDO 2.0。為澄清這個(gè)問題,我同那篇文章的作者采取同樣的方法——考察故事的背景。在java社群里最閃耀的O/R mapping明星有兩個(gè):JDO和Hibernate。他們互為競爭對(duì)手,將java的O/R mapping工具集劃分為兩個(gè)陣營,而他們共同的競爭對(duì)手又是EJB 2.x中的entity bean。這場(chǎng)戰(zhàn)爭是三大技術(shù)標(biāo)準(zhǔn)的公平較量,或者可以說成是封建貴族、改良派新貴族和革命派之間的較量,戰(zhàn)爭的結(jié)局眾人皆知——Hibernate獲得了最高的榮譽(yù)和程序員心目中的領(lǐng)導(dǎo)地位,JDO雖不可與之并駕齊驅(qū),但也差不到哪去,培養(yǎng)了一群重視粉絲,而臭名昭著的entity bean則被列入“不推薦使用(或推薦不使用)的技術(shù)名單”,掛上“戰(zhàn)敗國”的牌子。
下面我沿用那篇文章作者的用語“商業(yè)政治”。商業(yè)政治家們覺得Hibernate作為一種開源軟件確實(shí)不是其大規(guī)模推廣的最好方式,(假如Hibernate能加入Apache或Eclipse之類的社群興許好一些),而他又確實(shí)很棒,所以為Hibernate爭取一個(gè)適當(dāng)?shù)拿肿屍淅^續(xù)統(tǒng)治者的地位是迫在眉睫的事。注意,這里并不是說商業(yè)政治家們有多高尚,相反,作者也覺得他們都長著一副丑陋的像銅錢一樣的面孔,可是作者同時(shí)也相信他們永遠(yuǎn)都會(huì)把股東放在第一,客戶放在第二,而把程序員放在第三。當(dāng)IBM/SAP等意識(shí)到自己所提供的高端軟件中有一部分不如開源產(chǎn)品他們會(huì)立即得到客戶的抱怨聲,如來自BMW和Citibank的聲音,他們會(huì)立即用盡三十六計(jì)以提升這部分產(chǎn)品的競爭力。這次商業(yè)政治家們采用的方法是“挖人”!將Hibernate的老大挖到EJB來,鼓勵(lì)他創(chuàng)新,分階段的拋棄EJB 2.x的一些設(shè)計(jì),在EJB 3.0中集成Hibernate的思路,以求為客戶提供唯一的也是目前最好的解決方案,要知道,技術(shù)界的很多成本都耗在了技術(shù)分歧上面。此時(shí)的JDO還在第二名的花環(huán)中沾沾自喜,可當(dāng)他發(fā)現(xiàn)本次比賽的三個(gè)人在下次比賽中將變成兩個(gè)人時(shí)他立即意識(shí)到“第二名=最后一名”!這就好像蘇聯(lián)吞并和很多戰(zhàn)敗國,這讓盟軍十分惱火。JDO決定推出2.0版以適應(yīng)形式的需要,但是這個(gè)決定在前面提到的投票中被否決了。
原因很簡單,我們不需要兩個(gè)相同程度80%的規(guī)范在市場(chǎng)上并行,這為很多產(chǎn)品帶來了更多的成本。除非JDO 2.0從另一個(gè)角度切入市場(chǎng),并在規(guī)范中澄清如何解決其與EJB 3.0的競爭,否則不能標(biāo)準(zhǔn)化。那篇文章的作者認(rèn)為這是因?yàn)榇蠊鞠M约簝r(jià)格昂貴的應(yīng)用服務(wù)器能繼續(xù)出售,所以才否決JDO 2.0,我不知道他如何得到這個(gè)詭異的想法。事實(shí)上商業(yè)策略往往是不隨技術(shù)標(biāo)準(zhǔn)而變化的,即使這個(gè)世界上從來沒有過EJB 3.0,也沒有Hibernate,IBM也一樣能把他的小型機(jī)+AIX+WebSphere賣出去!而倘若他同時(shí)批準(zhǔn)了EJB 3.0和JDO 2.0,那就更好了,IBM現(xiàn)在可以提供兩套產(chǎn)品了,業(yè)務(wù)面豈不是更廣,要知道,對(duì)IBM來說真正的核心客戶是不會(huì)在乎IBM的應(yīng)用服務(wù)器有幾種的,他們依然照單全收!比如BMW和Citibank。而大企業(yè)們這樣做恰恰是為了維護(hù)市場(chǎng)的穩(wěn)定,減輕客戶CIO和IT部門的壓力,他們否決JDO 2.0的出臺(tái)也正是希望EJB 3.0系列產(chǎn)品能搶先占領(lǐng)市場(chǎng),讓昨日的山大王真正成為明日的技術(shù)皇帝!
最后,模仿那位作者,讓我們來回顧一下誰投了贊成票,以及他們的出發(fā)點(diǎn):1。Apache,在java的戰(zhàn)場(chǎng)上,apache永遠(yuǎn)都是贏家,因?yàn)樗揪褪窃诎缪菀粋€(gè)軍火商的角色,無論誰贏誰輸都得大量使用apache的組件構(gòu)建商業(yè)平臺(tái)。而作為java社群的領(lǐng)導(dǎo)者之一,apache相信技術(shù)的對(duì)立面越多,技術(shù)本身就會(huì)越繁榮,java不能結(jié)束世界大戰(zhàn)的局面。2。Apple,這種分歧跟他基本沒什么關(guān)系。但機(jī)遇對(duì)于蘋果通常都會(huì)比對(duì)于其它同等規(guī)模的企業(yè)要重要一些。3。Borland,一直希望能在應(yīng)用服務(wù)器市場(chǎng)上分一杯羹。事實(shí)上除了VB以外的任何一種開發(fā)類標(biāo)準(zhǔn)對(duì)borland都是有吸引力的。4。Doug Lea先生,作為java社群領(lǐng)導(dǎo)者中的自然人之一,“平等競爭”是個(gè)很重要的學(xué)術(shù)話題。5。Sun,稍稍讀一些IT發(fā)展史就會(huì)知道,Sun從來就不是商業(yè)路線的成功者。
總結(jié)起來,那篇文章犯了兩個(gè)基本的邏輯錯(cuò)誤:1。其作者本能的以為老企業(yè)一定會(huì)維護(hù)老產(chǎn)品的權(quán)威,卻沒有意識(shí)到這一次JDO的競爭對(duì)手不是上一次圣戰(zhàn)的戰(zhàn)敗國,而是一個(gè)擁有Hibernate血統(tǒng)的全新的EJB 3.0。2。開放和競爭確實(shí)對(duì)技術(shù)的發(fā)展很有好處,可是“過度競爭”卻會(huì)違反“客戶利益至上”的經(jīng)濟(jì)學(xué)不二法則。這使我想起了我曾經(jīng)有幸聆聽了北大光華的一位院長的講座,他告訴我們“壟斷有效率損失,競爭一樣有效率損失”,不能用單一的標(biāo)準(zhǔn)來衡量人類社會(huì)的每一個(gè)角落。
經(jīng)濟(jì)學(xué)出身的泡泡
These are the final results of the Public Review Reconsideration Ballot for JSR #243. The Executive Committee for SE/EE has approved this ballot.