Java規範面臨第二次分裂危機

其實這樣的危機對於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的開發模式。get

雖然如今還沒法肯定有多少企業打算吧他們的Java應用遷移到Google應用引擎下,可是從目前的數據來看,Google應用引擎社區註冊用 戶只有不到5000人,這與數百萬的Java開發者來講是一個個至關小的數字。虛擬機

兩個事件對以一下,會讓人以爲驚人的相似。不一樣的地方就是Google的策略比較柔和,並無像微軟哪項想完全的改變Java。可是,須要認可 的是,Google是一個很是強大的企業,強大到可讓一個Java 規範可用的子集變成一個事實上的標準子集。也就是說可以讓一個從大樹上截取的樹枝與大樹處於同等的地位。編譯

在這以前,Spring所作的也是相似的工做,其僅僅使用了Java EE的一個子集,可是沒有Google作的深刻完全。若是Google對Java EE的作法與Android的手法相似,那麼他就根本沒必要在意誰持有Java的商標了,也不會在受任何限制,作到當時微軟想作可是沒有作到的事情。架構模式

這一切的後果就是致使Java規範的分裂。隨着規範之間的距離愈來愈遠,Java開發者將面對像C++開發者所面對的一樣的問題,雖然採用的是 相同的程序語言,可是不一樣平臺開發者之間幾乎沒法互相溝通和理解。Java規範面臨第二次分裂危機

相關文章
相關標籤/搜索