成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

橫向技術分析C#、C++和Java優劣

開發 后端
本文將從技術人員的角度橫向分析C#、C++和Java優劣,其實選擇Java陣營還是.NET陣營,大家可以根據自己的實際需要來確定。

C#誕生之日起,關于C#與Java之間的論戰便此起彼伏,至今不輟。拋卻Microsoft與Sun之間的恩怨與口角,客觀地從技術上講,C#與Java都是對傳統面向對象程序設計在組件化軟件時代的革新之果,可謂殊途同歸。雖說兩個語言有著"90%的重疊",但那另外"10%的較量"也往往能夠左右一個天平的方向。本文將攜90%之共,論10%之異,對兩個語言做純技術品評。文章不涉及兩個語言的公司,市場等臺面后的事情--雖然這往往也會影響人們對編程語言的選擇。也不預備得出誰是誰的Killer,讀者應該選擇誰的問題。"語言選擇乃藝術而非技術問題",業界早有定論,無需多言。

C#和Java都提出了對傳統C++艱深,晦澀的語法語義的現代改良。在語法方面,兩者都擯棄了C++中函數及其參數的const修飾,宏代換,全局變量和全局函數等許多華而不實的地方。在繼承方面,兩者都采用了更易于理解和建構的單根繼承和多接口實現的方案。在源代碼組織方面,都提出了聲明與實現于一體的更好的邏輯封裝。在類型系統方面,兩個語言都在中間語言IL或字節代碼的基礎上提出了映射(Reflection)這樣的概念,徹底革新了傳統C++運行時類型鑒別的問題。但在大刀闊斧地對C++進行改革的同時,C#顯得更為保守,它對很多原來C++中很好的性質予以了保留,如基于棧分配的輕量級的結構類型,枚舉類型,引用(ref),輸出(out),數組(params)修飾的參數傳遞方式等,這些在Java中都被很可惜地丟掉了。在基本類型和單根繼承的對象之間的類型統一方面C#提出的box/unbox要比Java的包裝類顯得高明,效率也要好。

對C++不安全的指針及內存分配方式,C#和Java都提出了托管執行環境。效率問題是托管執行環境一直以來令人詬病的地方,Java虛擬機(JVM)的解釋執行方式曾經讓很多開發者"慢的不可忍受"。C#的JIT編譯方式為C#在這塊戰場上贏得贊聲一片,某些C#托管代碼甚至比傳統C++代碼都快。雖然現在各廠商實現的Java平臺也都一致地采取了JIT編譯方式,但C#在這方面的比較優勢非常明顯--C#的目標編譯語言IL從設計初始就把效率擺在了重要的地位,而Java的字節代碼的設計卻有些魯莽。托管執行環境經過幾年的實踐,在現代軟件界已經達成了共識,效率的犧牲換來的是高度安全的代碼--當然前提是犧牲的效率必須足夠的小,至少可以忍受。值得指出的是在這里C#同樣"念念不忘老一輩C++程序員",C#允許我們在unsafe上下文中進行指針操作。數組的索引越界檢查,類型安全在C#和Java中都被提到了相當的高度。在異常處理方面,不管從內置支持,還是從執行效率來講,C#都較Java略勝一籌。

"一次編程,多處執行"是程序設計一直以來的一個訴求,尤其是在現代互聯網絡時代。在跨平臺方面,Java的支持和實現都是為人稱道的,雖然JVM的速度仍然讓人備感頭疼。而C#雖然在底層構造方面對移植性進行了充分的考慮,但至少目前還沒有成熟的,經過檢驗的產品。C#在跨平臺方面似乎更熱衷于XML Web Services互操作,而不是跨平臺編程。但C#通過其基礎語言構造(CLI)對二十多種主流語言的對象級的互操作支持,又極大地提升了C#的技術地位。和COM組件廉價地互操作也為C#掙到不少分數--保持一個兼容的體系對現代軟件工業非常重要,也是對廣大開發人員負責任的表現。

面向組件無疑是當代軟件開發的主流。C#對組件編程甚至到了"迷戀"的地步,這與6年前就出道的Java不可同日而語--當然這是時代問題。C#通過屬性,索引器,委派,事件,操作符重載,特征,版本等實現了其對組件編程的***手的支持。雖然這些在Java中都可以通過方法,接口或者適配器來間接地實現,但軟件業的歷史告訴我們這無論對編程效率或者邏輯設計都是一種極大的損傷--高級語言首先面對的是人,而不是機器。除去這些語言層面的組件支持機制,.NET平臺也為組件的配置,運行,管理等提供了一攬子解決方案,而為組件開發量身定做的Visual Studio.NET更是令人興奮,這都為C#的組件編程開辟了廣闊的天地。在其他技術方面Java的微弱劣勢尚且可以忽略不計,但在組件編程方面Java相較于C#卻有著不可治愈的硬傷。尤其對于從C++和Visual Basic背景過來的開發人員,C#在這方面有著不可抵擋的魅力和誘惑。

鑒于XML Web Services在下一代企業分布式計算中的地位,我們有必要在這方面對兩個語言有一個簡單的交代。在XML Web Services的操作方面,.NET平臺直接在IL中間語言中的內置XML支持使得C#與生俱來地成為下一代Web服務的***,這是通過API集來支持Web服務的Java所不能比的。在C#中,XML,SOAP,UDDI,WSDL等底層協議被構建成了面向開發人員的組件,而Java中這些仍然是JAX(Java XML API)等底層協議的操作函數。當然這種局面可能僅僅是時間問題,一個強大的高效的Web Services組件模型對Java來說并不是不可逾越的鴻溝。

在語言標準化方面,微軟也史無前例地做出了令人贊賞的動作。目前C#及.NET平臺基礎構造已遞交歐洲計算機制造商協會ECMA,經過標準化后的C#將可由任何廠商在任何平臺上實現其開發工具及其支持軟件,這為C#的發展提供了強大的驅動力。而Java在這方面雖有動作--JCP(Java Community Process),但無疑只能是準標準化。在組件化軟件時代擁有一門像C++一樣的標準化語言,對軟件界尤其是廣大開發人員非常重要。

當然兩個語言的全面的技術品評絕非僅僅上述幾點簡單的羅列比較,其后端平臺(C# for .NET, Java for J2EE),及其編程框架的支持,各語言相關工具的實現,現有的系統基礎等等都對程序設計語言的發展產生相當的影響。從純技術角度來講,C#無疑較Java更具競爭力。爭吵誰抄襲誰也沒有意義--技術的發展本來就是一個相互借鑒的過程。純技術較量也并不能決定這場論戰的勝負--如果非要一決雌雄的話。軟件界倒樂見競爭,經過市場錘煉的技術才能更好地為我們服務,讓我們拭目以待!

【編輯推薦】

  1. 詳解C#編程中的反射機制與方法
  2. Fan——類似Java和C#的新語言
  3. C#連接數據庫和更新數據庫
責任編輯:彭凡 來源: 51CTO
相關推薦

2009-08-19 10:09:21

C#和C++

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++

2009-09-01 15:24:59

C++、C#和JAVA

2009-09-04 17:34:11

C#CC++

2010-01-28 14:38:36

C++和C#、Java

2010-01-08 16:52:57

C++和C#

2009-04-28 10:23:58

VB.NETC#對比

2009-08-28 10:14:45

C#內存泄露

2011-07-15 00:47:13

C++多態

2009-05-22 11:01:53

C++JavaC#

2010-01-18 11:05:24

C++

2009-08-12 18:16:47

C#類型比較

2009-08-31 16:01:31

C#和設計模式

2009-08-25 14:42:41

由C++轉向C#

2009-08-13 17:04:09

C#語言C#程序

2009-08-27 16:11:03

C# delegateC# event

2022-05-10 08:40:19

編程語言C#

2020-05-26 13:25:00

語言編譯代碼

2009-08-12 16:22:29

C#插件技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产一区二区 | 91在线精品秘密一区二区 | 日韩欧美网 | 欧美日韩国产一区二区三区 | 97国产一区二区精品久久呦 | 午夜视频免费网站 | 狠狠干美女| 在线观看涩涩视频 | 亚洲精品久久久久avwww潮水 | 成人在线视频一区二区三区 | 深夜福利影院 | 免费久久99精品国产婷婷六月 | 91成人在线 | 成人午夜精品 | 国产不卡在线播放 | 亚洲欧美一区二区三区情侣bbw | 久久久久久久久综合 | 天天干夜夜操 | 日韩欧美精品在线 | 亚洲精品第一 | 国产特级毛片 | 日本一区不卡 | 国产 亚洲 网红 主播 | 久久激情av| 欧美国产精品 | 国产一区二区高清在线 | 久久r免费视频 | 农村真人裸体丰满少妇毛片 | 国产精品久久久久久久7电影 | 欧美一级片a | 性色视频在线观看 | 黄色三级毛片 | 91亚洲一区| www.久草| 日韩中文字幕在线视频 | 国产在线一区二区三区 | av香蕉 | 一区二区三区欧美 | 男人av在线 | 超碰日本 | 超碰伊人久久 |