當前位置:編程學習大全網 - 編程語言 - java和C#哪個好

java和C#哪個好

現在普遍認為最有前途的是java和C #如下:

自從C#誕生以來,C#和Java的爭論就壹直在持續。拋開微軟和Sun的恩怨和爭吵,客觀來說,C#和Java都是組件軟件時代傳統面向對象編程創新的成果,可謂殊途同歸。雖然兩種語言之間有“90%的重疊”,但另壹種“10%的較量”往往可以影響壹種平衡的方向。本文將討論10%與90% * *的區別,對兩種語言做壹個純技術性的評價。文章沒有涉及兩種語言的公司、市場等幕後的東西——雖然這往往會影響人們對編程語言的選擇。它也沒有準備好弄清楚誰是誰的黑仔,以及讀者應該選擇誰。“語言選擇是壹門藝術,不是技術問題”,這在業內早已是定論,不用多說。

C#和Java都對傳統C++的困難和晦澀的語法和語義提出了現代的改進。在語法上,兩者都摒棄了C++中常量裝飾、宏替換、函數及其參數的全局變量和全局函數等許多華而不實的地方。在繼承方面,兩者都采用了更容易理解和構造的單根繼承多接口實現方案。在源代碼組織方面,他們都提出了更好的集成聲明和實現的邏輯封裝。在類型系統方面,兩種語言都在中間語言IL或字節碼的基礎上提出了反射的概念,徹底革新了傳統C++運行時類型識別的問題。而C#在對C++進行大刀闊斧改革的同時更加保守,保留了C++的很多好的屬性,比如基於堆棧分配的輕量級結構類型、枚舉類型、引用(ref)、輸出(out)、數組(params)修改參數傳遞方式等。,不幸的是在Java中丟失了。C#提出的box/unbox在基本類型和單根繼承的對象之間的類型統壹方面,比Java的wrapper類更智能、更高效。

對於C++的不安全指針和內存分配方法,C#和Java都提出了托管執行環境。效率的問題壹直被托管執行環境所詬病。Java虛擬機(JVM)的解釋和執行模式曾經讓很多開發者“忍無可忍”。C#的JIT編譯方式在這個戰場上為C#贏得了贊譽,有些C#托管代碼甚至比傳統的C++代碼還要快。雖然各個廠商實現的Java平臺都壹致采用了JIT編譯模式,但是C#在這方面的比較優勢是非常明顯的——c#的目標編譯語言IL從設計之初就把效率放在了重要的位置,但是Java字節碼的設計卻有些不計後果。經過幾年的實踐,托管執行環境已經達到了現代軟件行業* * *的認識,犧牲效率換取高度安全的代碼——當然,前提是犧牲效率必須足夠小,至少可以容忍。值得指出的是,C#在這裏也“癡迷於老壹輩C++程序員”,C#允許我們在不安全的上下文中操作指針。數組的索引越界,在C#和Java中已經相當程度的提到了類型安全。在異常處理方面,C#在內置支持和執行效率方面都優於Java。

“壹次編程,多處執行”壹直是編程的壹個需求,尤其是現代互聯網時代。在跨平臺方面,Java的支持和實現是值得稱道的,雖然JVM的速度還是讓人頭疼。雖然C#在底層結構上已經充分考慮了可移植性,但至少目前還沒有成熟的、經過測試的產品。C#似乎對XML Web服務互操作性比對跨平臺編程更感興趣。但C#通過其基礎語言構造(CLI)支持20多種主流語言的對象級互操作性,大大提高了技術地位。廉價的與COM組件的互操作性也為C#贏得了很多分——保持壹個兼容的系統對於現代軟件行業來說是非常重要的,對於廣大開發者來說也是壹種負責任的表現。

面向組件無疑是當代軟件開發的主流。C#編程組件甚至已經到了“癡心”的地步,和六年前才出道的Java不可同日而語——當然這是時代的問題。C#通過屬性、索引器、委托、事件、運算符重載、特性、版本等實現了對組件編程的第壹手支持。雖然這些都可以通過Java中的方法、接口或者適配器間接實現,但是軟件行業的歷史告訴我們,這對於編程效率或者邏輯設計來說是壹個極大的傷害——高級語言首先面對的是人,而不是機器。除了這些語言級別的組件支持機制之外。NET平臺還提供了組件的配置、運行和管理的壹攬子解決方案,為組件開發量身定制的可視化Studio.NET更是令人期待,為C#組件編程開辟了廣闊的天地。在其他技術方面,Java的弱劣勢可以忽略不計,但是在組件編程方面,Java相比C#是不可救藥的。尤其是對於C++和Visual Basic背景的開發者來說,C#在這方面有著不可抗拒的魅力和誘惑。

鑒於XML Web Services在下壹代企業分布式計算中的地位,我們有必要對這兩種語言在這方面做壹個簡單的解釋。在XML Web Services的操作中,內置了對。NET平臺直接用IL中間語言使得C#成為下壹代Web服務的首選,這是通過API集支持Web服務的Java無法比擬的。在C#中,XML、SOAP、UDDI、WSDL等底層協議被構造成面向開發者的組件,而在Java中,這些仍然是JAX(Java XML API)等底層協議的運行函數。當然,這種情況可能只是時間問題,強大高效的Web服務組件模型對於Java來說並不是不可逾越的鴻溝。

在語言標準化方面,微軟也以前所未有的方式做出了令人欽佩的舉動。目前,C#和。NET平臺已經提交給ECMA,歐洲計算機制造商協會。標準化後,C#可以由任何廠商及其支持軟件在任何平臺上開發,這為C#的發展提供了強大的驅動力。雖然Java在這方面有個動作——JCP(Java Community Process),但也只能是準標準化的。在組件軟件時代,擁有壹門像C++這樣的標準化語言,對於軟件行業,尤其是開發者來說,是非常重要的。

當然,兩種語言的綜合技術評測並不僅僅是上述幾點的簡單比較。它的後端平臺(C# for。NET,Java for J2EE),其編程框架的支持,各語言相關工具的實現,現有的系統基礎對編程語言的發展有相當大的影響。從純技術角度來看,C#無疑比Java更有競爭力。爭論誰抄襲是沒有意義的——技術的發展是壹個互相學習的過程。純粹的技術較量無法決定這場辯論的勝負——如果有必要壹決雌雄的話。軟件行業樂見競爭,市場錘煉出來的技術能更好地為我們服務。讓我們拭目以待!

  • 上一篇:信息對抗技術就業前景
  • 下一篇:控制器有哪些基本功能?可分為哪幾類?分類依據是什麽?
  • copyright 2024編程學習大全網