自從協議簽過以后,在合肥和南京的這段時間我沒買任何書,也沒訂任何雜志,因為與其買了帶到北京來,不如到北京來再買。加上到了北京的前幾天都在適應環境,也沒顧的上這樁子事。算算看來已經有四個月沒看<<程序員>>了,<<程序員>>的很多概念已經在我腦海中淡化了,(天哪,這樣不好!),前兩天遇到潘加宇,居然問他“你有沒有給<<程序員>>寫過文章?”話一問出來連我自己都覺得搞笑!潘加宇早就是<<程序員>>的專欄作家了!幸好我們當時沒吃米飯,否則肯定兩個人對噴。
為了不再丟人,我一口氣把幾個月的<<程序員>>都買了,好好補補血。遺憾的是我還是沒有逃脫我不喜歡的論調和文章,就是那種看過了特別想把剛才吃的都吐出來的那種文章。比如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.