最近在學習j2se,經過了大約有二十天,把馬士兵老師的J2SE看完了,感覺這個老師太幽默了,聽他講課不會走神,時間的利用率特別高。真心的給馬士兵老師點個贊,然後再給讓我們學習這個影片的米老師點兩個! (世界上不乏美好的事物,缺乏的是發現美好事物的眼睛!)。
廢話不多說了,看看在這個影片中,到底講了那些內容。如下圖所示:
可能學過任何一種物件導向語言(我學的c#,c#就是仿照Java,並對java進一步改良)的人,看到這個圖的第一感覺,都是這些東西基本上不是都學過嗎,好像只有GUI,JDBC是個新的東東。
其實真的是差不多的,反正大部分人認為他們是相同的。下邊對他們進行一下比較!
在語法方面,兩者都擯棄了C++中函數及其參數的const修飾,宏代換,全局變數和全局函數等許多華而不實的地方。
在繼承方面,兩者都採用了更易於理解和建構的單根繼承和多介面實現的方案。在原始碼組織方面,都提出了聲明與實現於一體的更好的邏輯封裝。
在基本型別與單根繼承的物件之間的型別統一面C#提出的box/unbox要比Java的包裝類別顯得高明,效率也要好。
面向組件無疑是當代軟體開發的主流。 C#對組件程式設計甚至到了"迷戀"的地步,這與6年前就出道的Java不可同日而語--當然這是時代問題。 C#透過屬性,索引器,委派,事件,操作符重載,特徵,版本等實現了其對組件編程的第一手的支持。雖然這些在Java中都可以透過方法,介面或適配器間接實現,但軟體業的歷史告訴我們這無論對程式設計效率或邏輯設計都是一種極大的損傷--高階語言首先面對的是人,而不是機器。除去這些語言層面的元件支援機制,.NET平台也為元件的配置,運行,管理等提供了一攬子解決方案,而為元件開發量身訂做的Visual Studio.NET更是令人興奮,這都為C#的組件編程開闢了廣闊的天地。在其他技術方面Java的微弱劣勢尚且可以忽略不計,但在組件編程方面Java相較於C#卻有著不可治癒的硬傷。尤其對於從C++和Visual Basic背景過來的開發人員,C#在這方面有著不可抵擋的魅力和誘惑。
在跨平台方面,Java的支援與實作都是為人稱道的,雖然JVM的速度仍讓人備感頭痛。而C#雖然在底層構造方面對移植性進行了充分的考慮,但至少目前還沒有成熟的,經過檢驗的產品。 C#在跨平台方面似乎更熱衷於XML Web Services互通,而不是跨平台程式設計。但C#透過其基礎語言建構(CLI)對二十多種主流語言的對象級的互通支持,又大大提升了C#的技術地位。和COM組件廉價地互通也為C#賺到不少分數--維持一個相容的體系對現代軟體產業非常重要,也是對廣大開發人員負責任的表現。
當然兩個語言的全面的技術品評絕非僅僅上述幾點簡單的羅列比較,其後端平台(C# for .NET, Java for J2EE),及其編程框架的支持,各語言相關工具的實現,現有的系統基礎等等都對程式設計語言的發展產生相當的影響。從純技術角度來講,C#無疑較Java更具競爭力。爭吵誰抄襲誰也沒有意義--科技的發展本來就是一個相互借鏡的過程。純技術較量也並不能決定這場論戰的勝負--如果非要一決雌雄的話。軟體界倒樂見競爭,經過市場錘鍊的技術才能更好地為我們服務,讓我們拭目以待!