Java規范第二次面臨分裂危機
原創【51CTO觀察】其實這樣的危機對于Java來說已經不是***次了,在上個世紀90年代后期,也就是Java剛剛出現不長時間就遇到了***次危機。當時微軟為了跟SUN之間爭奪Java的事實標準權,開發了自己特有的版本Visual J++,并與其VS系列開發套件結合在一起,還提供了專有的擴展API。這一系列行為都背離了SUN對于Java規范的要求。這一紛爭導致SUN與微軟之間刻薄地批評對方,并對簿公堂。最用在2001年以SUN勝出結束,這也讓微軟徹底離開了Java陣營,從此與Java無緣。在該事件之后,也確立了Java的使用原則,那就是SUN持有Java的標準權,無論哪個廠商,都必需遵守該標準。
在后來成立了的JCP組織,允許更多的廠商參與到Java的規范制定當中。JCP組織的出現,讓IBM、Oracle很眾多軟件廠商有機會參與到Java的發展當中,使Java得到了十足的發展。如果當時因為微軟與SUN之爭,導致Java標準分裂,就不會有今天的成就。
上一次危機已經過去10多年,今天新的危機有出現了。歷史又一次重演。前幾天VMWare與Google發表聲明,一起進軍云計算領域。并將Java作為***開發語言,著名的Java開源框架Spring作為***開發模型。看起來這視乎在為已經10多歲的Java注入新生力量。但是51CTO也敏銳的發現,VMWare與Google一系列動作之后,也為Java帶來了標準分裂的危機。
盡管Google是開源以及開放網絡標準的堅定支持者。但是在談到Java標準問題的時候,卻說他們采用的是一個小于標準的純Java路線。也就是說Google不會支持全部的Java標準。只會支持一部分。如果把Java標準比喻成大樹的話,Google支持的部分可能是一個樹枝、也可能只是一個樹葉。這個說法對于Google來說,已經有過類似的歷史。
在其開源Android平臺上,采用的就是部分標準策略。在Android平臺上,只支持Java基本語法和部分API,并且必須采用Android特有的架構模式。更大的區別是,Android平臺上的Java程序只是與標準Java程序在源代碼級別兼容,編譯結果根本不一樣,這導致Java的***特點,也就是一次編譯到處運行成為空話。
在Google與VMWare聯手進軍云計算的聲明中,關于Java EE規范問題,Google說,他們只會支持該規范的一個子集。也許在不久的將來,大家將會看到一個被閹割過的Java EE版本。至于在云計算平臺上將采用什么樣的虛擬機問題,還沒有確切的消息。很可能Google版本的Java EE與Android平臺上的Java SE一樣,只是一個擁有Java外表的Java。
有人也許會提出疑問,既然是這樣,為什么Spring這樣一個遵守Java規范的開源框架也會加入這一聯盟,需要提醒大家的是,Spring的創始人本身也是一個Java EE規范的反對者,非常痛恨Java EE中的EJB以及重量級Web Service的人。其開發Spring的目的就是想改變Java EE的開發模式。
雖然現在還無法確定有多少企業打算吧他們的Java應用遷移到Google應用引擎下,但是從目前的數據來看,Google應用引擎社區注冊用戶只有不到5000人,這與數百萬的Java開發者來說是一個個相當小的數字。
兩個事件對以一下,會讓人覺得驚人的類似。不同的地方就是Google的策略比較柔和,并沒有像微軟那樣想徹底的改變Java。但是,需要承認的是,Google是一個非常強大的企業,強大到可以讓一個Java 規范可用的子集變成一個事實上的標準子集。也就是說可讓一個從大樹上截取的樹枝與大樹處于同等的地位。
在這之前,Spring所做的也是類似的工作,其僅僅使用了Java EE的一個子集,但是沒有Google做的深入徹底。如果Google對Java EE的做法與Android的手法類似,那么他就根本不必在乎誰持有Java的商標了,也不會在受任何限制,做到當時微軟想做但是沒有做到的事情。
這一切的后果就是導致Java規范的分裂。隨著規范之間的距離越來越遠,Java開發者將面對像C++開發者所面對的同樣的問題,雖然采用的是相同的程序語言,但是不同平臺開發者之間幾乎無法互相溝通和理解。
【編輯推薦】