日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

横向技术分析C#、C++和Java优劣

發(fā)布時間:2023/12/18 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 横向技术分析C#、C++和Java优劣 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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


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

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

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

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

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

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

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

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

【編輯推薦】

  • 詳解C#編程中的反射機制與方法
  • Fan——類似Java和C#的新語言
  • C#連接數(shù)據(jù)庫和更新數(shù)據(jù)庫



  • 如果你的學歷和能力,只能進入一般的軟件公司或集成公司,那么選擇微軟的技術(shù)體系不錯。因為微軟體系,網(wǎng)上很多學習資料,而且大量的企業(yè)應用是用微軟技術(shù)開發(fā)的,而且很多公司也用微軟技術(shù)。所以公司多,你好找工作。微軟的技術(shù)一般固定:C#+Asp.net+SQLSERVER+Visual Studio。如果你的學歷和能力,能進入做大型企業(yè)應用的公司,那么你就選擇JAVA的技術(shù)體系。因為現(xiàn)在大型企業(yè),基本都用JAVA開發(fā)。你可以從eclipse、structs、hibernate、WebService、Tomcat、Apache、JBoss、POJO、Oracle開始學習,然后再學習WebLogic、WebSphere、Portal技術(shù)、工作流技術(shù)。如果你想進入互聯(lián)網(wǎng)公司或web2.0創(chuàng)業(yè)公司。那么一般Php、Mysql、Apache、Ruby on Rails、Python是你的學習目標。如果你想進入手機開發(fā),那么Symbian和C++(Nokia,市場份額最大)、J2ME(android產(chǎn)品,google發(fā)布,還未正式生產(chǎn),但筆者認為很有前途)、Windows Mobile(微軟,好開發(fā),從開發(fā)思路到工具到語言,都是你所熟悉的)。這三類都會三者鼎立,誰也不會把誰干掉。至于5年之后,就不好說,至少5年內(nèi),是手機時代,是手機無線時代,每個廠商都在爭搶這一塊未來最有錢途的肉。如果你想進入目前炙手可熱的網(wǎng)游公司。做服務器端,你得C++過硬、網(wǎng)絡傳輸技術(shù)過硬、并發(fā)線程處理、了解Linux編程要和了解windows編程一樣深入。如果你想做客戶端,那么圖形圖像處理算法你得首先過關。當然,現(xiàn)在很多引擎、工具、AI包、材質(zhì)庫、腳本減少了不少客戶端編程的難度。如果你想進入現(xiàn)在已經(jīng)未來10年內(nèi)一直很熱的嵌入式編程,那么C++,而且你的單片機編程你得過關。中國是世界第一制造大國,而且這種局面在5-10年內(nèi)也很難改變。制造,過去比誰的工人成本低。但是現(xiàn)在材料和人工的增長,使制造壓力巨大。就只能提升自己的制造能力。制造高尖端的產(chǎn)品,就需要高尖端的流水線。而且,中國的電子產(chǎn)品也越來越強大,日本產(chǎn)品從最初的獨霸中國,漸漸變成了中國國貨的天下。在手機上、數(shù)碼相機上、家電、冰箱、DVD、空調(diào)、汽車、交通、醫(yī)療、數(shù)控,等等,很多領域需要嵌入式編程。就連咱們的嫦娥一號也是嵌入式編程的典范。華為、中興這些通信設施也是嵌入式編程范圍。當然,你也可以劍走偏鋒。過去是Notes編程,隨著國產(chǎn)OA的興起,Notes編程漸漸衰退。但是,中國現(xiàn)在大型企業(yè)都在上線ERP,而且大多用的是Oracle或SAP的ERP。這些ERP產(chǎn)品,都提供了客戶化定制編程開發(fā)環(huán)境,提供了完備的應用API。大型企業(yè)應用ERP,都需要定制化開發(fā),大量缺乏這類人才。但是,市面上這些學習資料都非常少,這是個難題。另外,現(xiàn)在的外包也非常熱,各地建立外包園,就跟當年建立軟件園一樣群起。想進入外包公司,首先日語或英語需要過關。咱們國家的外包,一般來自日本和歐美。在開發(fā)中,一般也是三種語言的主流:C++、C#、JAVA。所以,從以上分析來看,C++、C#、JAVA,都是當今的主流。都在各方面都應用很廣。你選擇哪一類都會有很多的機會和空間。但如果你學了C++,又怕以后碰不到C++的工作,還要學C#,還要學JAVA,那么你終將一事無成。不要怕,鉆一門足矣。不過,擁有了一份技術(shù)技能,你能應聘進入一家公司。但是,一家軟件公司如何管理,你是否適合這種管理,你在這個團隊中能扮演什么角色,你在公司中奮斗的路徑是什么,我會在下一篇詳細介紹軟件公司管理的時候給大家講到。我是工作2年后就跳一次,然后加15%的薪水呢,還是有計劃的發(fā)展我的IT職業(yè)呢?還是我就混一混,不好玩我就換行業(yè)呢?你的路,你自己把握。但,千萬不要自己玩自己,不好玩。

    總結(jié)

    以上是生活随笔為你收集整理的横向技术分析C#、C++和Java优劣的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。