C++越來越不行了,想轉的趁早. Java與C#誰是英雄? |
送交者: 紋紋 2003年03月05日16:07:28 於 [新 大 陸] 發送悄悄話 |
微軟的"看門人"比爾·蓋茨終於在闊別五年之後,再次於2003年2月底訪華;這下可忙壞了傳媒,網上有關猜測其來華意圖的文章多不勝數,最主流的看法是說比爾·蓋茨此次來華是為微軟.NET戰略布道。在各大網站開闢的有關蓋茨訪華專題中,都有讓網友給蓋茨留言的網頁。蓋茨曾經是名程序員,現在貴為世界首富,筆者最想問的是:拋開壟斷、訴訟的問題不談,作為一名程序員,SUN的Java語言與微軟的C#究竟誰優誰劣?究竟誰更可能抓住程序員的心,在這個互聯時代裡站穩腳跟呢? 平台之爭引發訴訟 互聯網的崛起,使得PC從產業中心向邊緣過渡,而歷經20餘年的發展,PC市場也趨於飽和,唇亡齒寒,這叫靠PC吃飯的微軟如何不急?吸取了當年開發瀏覽器軟件的教訓,2000年6月,微軟啟動.Net計劃,進軍網絡服務市場,比爾·蓋茨自信地稱:"世界上所有一切都將包括在互聯網服務中。" .NET的思想其實是來源於瀏覽器,即今後的電腦裡面將沒有其它的應用軟件,只需要一個超級瀏覽器。用戶就可以從網上下載所需要的軟件。C#是用來開發這類應用程序和服務的編程語言,被認為是Sun公司Java編程語言的競爭對手。C#語言除了可以使電腦之間的通信更簡便、更直接外,還能使手機、PDA等掌上設備快捷地顯示互聯網上的信息。SUN公司也力推SUN One來抗衡微軟的.NET,SUN ONE平台的基礎包括Solaris操作系統、Java編程語言。以及相應的軟件開發工具。Sun還試圖把各種不同的軟件集成到這個平台中,包括它的電子商務軟件,並計劃使它所有的產品全都兼容新的互聯網服務技術標準。 去年的這個時候,微軟的死對頭SUN公司的CEO斯科特·麥克尼利也來華訪問,推銷其SUN One技術。有意思的是,就在麥克尼利訪華的前幾天,SUN將微軟推上法庭,要為其Java語言受到排擠而上訴,一開口就要微軟賠10億美元!一年的時間匆匆而過,這場官司也打得沒完沒了,雖然莫茲法官在2003年1月中旬判決微軟必須在120天內在其操作系統中嵌入Java語言,然而,微軟不服,已經提請上訴。訴訟戰的車輪又轉動了起來,有關Java與C#的話題再一次熱了起來。 Java風靡驚動微軟 20世紀90年代初,SUN在PC市場上所占份額還很有限,可是當時它就斷言,PC命不久矣,即將被類似機頂盒那樣的消費類電子產品所取代,為了搶占先機,SUN將公司里十幾名最優秀出眾的工程師召集在硅谷的某個地方,搞起了封閉式的開發,一年半之後,這些天才們創造出一個叫做STARSEVEN的設備,可以通過它控制許多家用電器,STARSEVEN的核心就是一種新的編程語言:OAK。SUN很快意識到不是機頂盒,而是互聯網將統治未來的數字世界,1995年,OAK被改名為Java正式發布,它後來被譽為是互聯網時代第一個編程系統,Java在兩個方面有所創新。首先,Java是所謂的"解釋性語言",也就是說Java程序不直接向運行它的機器發出指令,而是Java代碼先告訴一個"解釋器"要做什麼,再由解釋器告訴計算機。正是這種解釋方法,允許Java程序能夠運行在許多不同的計算機系統上,包括裝有各種各樣操作系統的PC機、移動電話、大型服務器,因此,要在某個特定的系統上運行Java程序,只需要為該系統編寫解釋器即可。 對編程者來說,Java是很有趣的語言,因為它是最早的"面向對象"的語言之一。當時OOP(面向對象程序設計)是個熱點,簡單地說,OOP是一種設計構想,它幫助編程者把一個應用軟件分解成若幹個小部分來單獨編程,並且把代碼分成一些可以重複使用的稱為"類"或者"模塊"的信息單元。在Java之前,C++是最主要的面向對象的編程語言--但是,儘管OOP被認為能夠使編程更加容易,但是學習C++面向對象課程卻是件很困難的事情。Java出現之後,立刻受到學生們的歡迎,它成為C++的替代品而爆發,很快,Java被認為是大學校園裡首選的入門語言,微軟心驚又心動。 Java的替代者C# 微軟意識到來自於Java的威脅之後,它準備了一個Java的替代品:C#。許多人認為C#只是Java的改良品種;C#在某些方面表現優異,某些方面則不如Java,但總體上兩種語言非常接近。有編程者稱:C#之與Java就象Windows之與MAC操作系統(蘋果電腦的操作系統)。C#也是面向對象的、也是解釋性語言。作為.NET框架編程模型的一部分,C#語言的外觀酷似Java。微軟說像Java一樣,C#也能夠運行在非Windows機器中。歐洲某標準制定團體甚至還贊C#是開放的語言,並且脫離了微軟的直接控制。 那麼Java與C#誰更能打動編程者的心? 某調查公司曾經使用Google搜索引擎來統計以下指標:熟練使用某種語言的工程師數量、某種語言課程教學的可用性、有多少公司在出售用某種語言編寫的軟件。最後,綜合這幾個方面進行打分。Java以45.2分排名第一;第二名是C,得分是32.2;C++以24.6分排在第三位;C#遠遠地落在第九位,得分為4.6,只有Java得分的十分之一。 然而,在調查中也發現,跟過去相比,C#的受歡迎程度正在急劇上升;而Java的則相對穩定。"C#正在向在兩年內成為頭號編程語言的目標發展。"在某種意義上,C#的未來更令人期待,因為有更多的人開始使用這種新的語言。 很顯然,看了上述數據之後,IT評論家們又要面對這樣的兩個問題了,Java為什麼如此受到大家的歡迎?既然Java人氣很旺,為什麼它無法徹底打敗C#? .NET最美妙之處在於它允許使用多種編程語言,而不象Java那樣,限制人們只能使用一種語言,開發者能夠使用包括C++、C、C#甚至Java在內的幾乎任何語言來編寫代碼,然後把這些代碼翻譯成機器看得懂的CLR代碼(微軟稱其為公共語言運行時)。這樣,.NET可以讓開發者保護自己的"代碼投資",也就是說,過去,他們用C++或C編寫的代碼都能夠再次被利用,而且為了增加新功能,可以用C#編寫新的程序段,同樣,這些C#語言也將被編譯成CLR。Java則正好相反,重新使用"代碼投資"的Java解決方案卻是扔掉所有舊代碼,然後用Java語言重寫一遍! 饒是如此,一些開發者仍然願意為了Java做出重寫代碼的犧牲,因為他們認為.NET有一個重大的缺點:這種語言只能在Windows環境中運行。可微軟一直否認這種指責,還指出C#通過ISO標準化就是一個反證。但是許多一直在使用C#的程序員認為,雖然他們喜愛C#,可也只把C#看作是只能運行在Windows上的一種語言,大概習慣使然。 在所有編程語言中,C#和JAVA可能是最好的,也可能是相類似的語言,但是它們之間仍然有一道理性的鴻溝。選擇Java的人可能更加重視兼容性,而不願意為每個系統專門創建程序,他們更喜歡程序能夠在任何地方運行,即使他們不得不失去自己的代碼投資。選擇.NET的人可能也關心跨平台,但是他們更喜歡在這件事情上有點靈活性,他們想要創建只能運行在Windows上運行的程序,從而這個程序能夠與其它也只能運行在Windows上的程序一起合作。 遲來的判決 微軟感到了威脅與危險之後,先是對嵌入在Windows內的Java語言做些小動作之外,影響某些Java程序的性能與表現,最後乾脆宣布不提供對Java的支持,正如前面所說,只有Windows中安裝了解釋器(Java虛擬機),Java程序才能夠正常運行。SUN一怒之下將微軟告上法庭。雖然目前看來,它取得暫時性的勝利,莫茲法官在2003年1月中旬判決微軟必須在120天內在其操作系統中嵌入Java語言,然而,微軟不服,已經提請上訴。 可就算SUN最後贏了官司,傷害也已經造成了。 就在Java發布之後不久,人們發現Java程序在Windows上的運行速度太慢了,雖然SUN一直堅信這是微軟在其中做了手腳,事到如今,Java仍然背着這個不良的第一印象。儘管Java在非Windows環境中取得了相當大的成功,它是網絡服務器和移動設備中最廣泛使用的語言。SUN估計目前已經有三百萬的Java開發者,如果微軟在其銷售的每一份Windows操作系統軟件中安裝新的、高級的、快速的Java語言,那麼不會缺乏使用Java來開發Windows程序的編程者。因此,這次訴訟所圍繞的問題就是:究竟是Java自己性能不佳,導致其在PC機上的失敗,還是因為微軟利用其在操作系統市場的壟斷地位,從中作梗呢?但有一點很明白,Java已經誕生8年了,它在微軟無法壟斷的所有市場中都做得很好,大獲成功。 SUN與微軟的這場官司似乎並沒有引起太多的反應,一方面可能是因為事情發生在假期,另一方面似乎也和SUN和微軟之間的爭鬥已經持續了好幾年有關。評論界的人士仍然比較悲觀,他們認為即使SUN最終獲勝,Java的普及程度也不見得大幅度增長,微軟在早期反對Java的行動中已經確定了它的命運,並且,在那段歲月里,已經為微軟節省寶貴的時間,用.NET接管另一領域的軟件市場鋪平了道路。但是這畢竟是一件有意義的事情,無論是Java還是C#,從理論上來說,都是有能力在多種平台上運行,而且都很出色,仍然奢望如果今後能夠在Windows中同時支持Java和.NET,編程者將擁有自由選擇的權利。 當許多程序員被問及最喜歡C#還是Java時,他們都有遲疑,有幾位說編程語言就象宗教,一旦對其中一種或者一系列語言慢慢習慣後,就不顧所有的邏輯、論據或者什麼實際需要,他們會堅持使用,因為那是他們所熟悉的、所信任的。就象筆者最喜歡的匯編語言那樣,雖然繁瑣又低級,但是因其運行速度快,仍是最愛。 且讓我們靜心等待比爾·蓋茨面對這個問題所給出的答案。 |
|
|
|
實用資訊 | |