<bdo id="xkgs2"><xmp id="xkgs2">

<bdo id="xkgs2"><progress id="xkgs2"><bdo id="xkgs2"></bdo></progress></bdo>

<nobr id="xkgs2"></nobr>

<bdo id="xkgs2"></bdo>

<menuitem id="xkgs2"><xmp id="xkgs2"><menuitem id="xkgs2"></menuitem>
<menuitem id="xkgs2"><font id="xkgs2"><samp id="xkgs2"></samp></font></menuitem><menuitem id="xkgs2"><xmp id="xkgs2"><menuitem id="xkgs2"><xmp id="xkgs2">

<bdo id="xkgs2"><xmp id="xkgs2">

<menuitem id="xkgs2"><xmp id="xkgs2">

<bdo id="xkgs2"></bdo>
<menuitem id="xkgs2"><xmp id="xkgs2"><samp id="xkgs2"></samp>

<b id="xkgs2"><ins id="xkgs2"><samp id="xkgs2"></samp></ins></b>

新疆軟件開發

本站首頁 軟件開發 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網站建設
  您現在的位置: 新疆二域軟件開發公司 >> Java技術 >> 文章正文

解析c#語言和java語言最相似的地方

        C#和Java都是很不錯的語言。他們通過類似的方式達到了類似的目的,盡管C#比Java多出來一些和句法相關的東西,例如foreach關鍵字和一些更加讓人高興的擴展/實現架構。不幸的是,這些改進的光芒被削弱的東西掩蓋掉了。在本文里,我將比較兩種語言,并盡量避免深入到JVM和CLR層。
Java:無可爭辯地具有C++所有的精華
在比較Java和C#的時候,你不可能不注意到它們諸多的相似之處,這在某種程度上要歸結于它們共同的來源:C和C++。但是,當Gosling和他的同事們坐下來創造Java的時候,他們不僅吸取了C++的能力,而且更重要的是,他們減掉了一些無用特性,后者讓C++更容易出錯誤而且更難學習。C#的設計者加入了很多C++的特性,而Java也加入了這些特性,但是C#卻沒有去掉C++的最糟糕的一些特性。其結果就是這樣一門語言,它仍然為所有人提供了所有的特性,但其結局是內部沖突不斷,而且過于復雜。

散漫的句法缺陷
最容易找出的錯誤是流控制和句法。C#提供了goto command,將其作為更改程序執行點的機制。自從Edsger W. Dijkstra在1968年出版了他的《關于Go to陳述式害處的考慮(Go To Statement Considered Harmful)》。Goto語句導致代碼難以調試,而且很難被測試工具處理。

在另一種不同的情況下,操作符過載同樣也有很大問題,只不過層次不一樣罷了。當“+”根據操作數的類型而代表任何東西的時候,代碼的功能就不再透明,難以預料的副作用就會發生。

C#在安全上的削弱
C#有一個用于將代碼區域標示為不安全的簡單機制。在這些不安全的區域里,Java以及后來的C#安排到位了一些安全措施,用以防止程序員直接修改內存位置,以及使用點運算,但是這些措施是值得懷疑的。在使用具有垃圾清理功能的高級語言時,如果下到內存地址這一層,就會把對象/內存之間有意作出分離弄混。錯誤就會容易出現,調試成了惡夢,緩沖區溢出再次抬頭,C和C++里著名的安全漏洞再次現身。

C#還允許對主機系統上本機庫的簡單訪問。這個與非.NET對象相結合的訪問同Java本機接口(JNI)所提供的功能類似,但是它更加危險。JNI被設計用來小心地限制Java代碼以及本機代碼同已定義好的接口之間的交互操作,.NET使得調用本機對象文件變得極其簡單,結果導致開發人員在做這的時候,無法意識到他們在這一過程中把平臺的可移植性也扔出了窗外。

SOAP的集成
C#,及其更大的擴展.NET,已經同SOAP Web服務緊密地集成在一起。SOAP是使用XML指定參數和結果值來進行遠程過程調用的好標準,但是它并不是唯一的方式。利用用于Web服務的外部庫能夠允許Java開發人員輕易地更改其Web服務的風格,使其成為SOAP、XML-RPC,或者什么還沒有發明的東西。當然,C#的開發人員總是能夠選擇將外部庫用于SOAP的Web服務,但是由SOAP標準的緊密集成所造成的限制要比它能夠做的東西更多。


所有者的恐慌
C#里最令人恐慌的特性可能就是其所有者了。微軟已經為將C#和.NET用于非Windows平臺進行了精心的展示,但是這在很大程度上還只是作秀。其用于非Windows平臺的CLR是問題多多,錯誤多多。它通過ECMA標準化過程來運行C#??這一步連Sun也不敢在Java上邁出。其擔心來自于微軟對此可能封鎖的程度,如果它愿意的話。微軟已經申請了一個專利,以排斥他人編寫第三方的CRL,例如Mono計劃。如果微軟決定對免費的C#和.NET社區施壓,它就有能力拿票子和法律的大棒把其開發活動趕回到Win32平臺??當然這也不是它想看到的情況。

而Java語言則相反,不是ECMA標準的,真可惜Sun沒有遵從這一標準。但是,它是可以實現的,而且沒有專利的阻礙,其虛擬機和核心類庫都有來自第三方的開放和封閉源代碼的實現。C#看起來是免費的,其實不然,而Java看起來限制很多,但是它能夠依據法律通過免費的途徑來實現。

最后,我從來都沒有想到我會說這個,但是Java具有更好工具的支持,即使是在考慮到集成開發環境(IDE)的情況下。Visual Studio .NET是一個很不錯的IDE。它代表了多年的努力,而且特性很豐富。但是,Eclipse IDE包括了對Java的支持,它在穩定性、易用性和所提供的特性上超過了Visual Studio。IBM對Eclipse的貢獻舉足輕重,而且如果你信奉原來的軟件格言“創建一個扔掉的(Build one to throw away)”,那么你可以把Visual Age作為第一個(被拋棄掉了的)嘗試。對于使用C#的開發人員來說幸運的是,Eclipse的.NET版本正在開發中。

不是那么差,但是還不是Java
客觀一點評價,C#里并沒有什么很恐怖的東西。它沒有Visual Basic里的那些很恐怖的東西,而且它事實上也沒有繼承像C里的一些東西,而這些東西會讓開發人員開槍卻打中自己腳。但是,底線是,C#并沒有做很多東西,如果有任何東西比Java更好的話。它在某些方面很明顯的要更差。在這兩個非常類似的語言之間作選擇的時候,請選擇稍稍更好且經歷風雨的那個:Java。

作者:lmx87579… | 文章來源:賽迪網 | 更新時間:2008-2-29 15:20:42

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    JAVA開發的6個實踐的例子
    JAVA中的抽象類型的一些概念
    java語言開發程序中的幾個例子大家看看
    了解java開發語言在軟件開發中的幾個誤區
    C#實現短信發送程序的例子
    如何才能使用Java實現內部領域的特定語言
    .net學習:c#事件的深入分析
    Java開發學習小心使用Date以及Time類
    sun最近修補了一部分java的安全補丁
    Java程序員應該了解那些開源協議
    軟件技術
    · 開發語言
    · Java技術
    · .Net技術
    · 數據庫開發
    最新文章  
    ·j2se 嵌入式腳本抓取引擎
    ·JAVA開發的6個實踐的例子
    ·JBuilder7 / Weblogic7開發
    ·JAVA中的抽象類型的一些概
    ·java語言開發程序中的幾個
    ·了解java開發語言在軟件開
    ·如何才能使用Java實現內部
    ·Java開發學習小心使用Date
    ·Java程序員應該了解那些開
    ·java性能優化的一些見解
    ·介紹JDK5.0一些collection
    ·基礎學習:java中使用存儲
    ·解析c#語言和java語言最相
    ·Java語言學習:jAVA中 的多
    ·Java是不是應該增加新特性
    關于我們 | 軟件開發 | 下載試用 | 客服中心 | 聯系我們 | 友情鏈接 | 網站地圖 | 新疆電子地圖 | RSS訂閱
    版權所有 © 2016 新疆二域軟件開發網 www.asuburbanlife.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯大廈A-5C 郵編:830000
     
    亚洲伊人成综合人影院小说,亚洲永久无码浪潮,思思99re8这里有精品热视频
    <bdo id="xkgs2"><xmp id="xkgs2">

    <bdo id="xkgs2"><progress id="xkgs2"><bdo id="xkgs2"></bdo></progress></bdo>

    <nobr id="xkgs2"></nobr>

    <bdo id="xkgs2"></bdo>

    <menuitem id="xkgs2"><xmp id="xkgs2"><menuitem id="xkgs2"></menuitem>
    <menuitem id="xkgs2"><font id="xkgs2"><samp id="xkgs2"></samp></font></menuitem><menuitem id="xkgs2"><xmp id="xkgs2"><menuitem id="xkgs2"><xmp id="xkgs2">

    <bdo id="xkgs2"><xmp id="xkgs2">

    <menuitem id="xkgs2"><xmp id="xkgs2">

    <bdo id="xkgs2"></bdo>
    <menuitem id="xkgs2"><xmp id="xkgs2"><samp id="xkgs2"></samp>

    <b id="xkgs2"><ins id="xkgs2"><samp id="xkgs2"></samp></ins></b>