音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

看看C#與Java相似之處的對比

出處:12864 發(fā)布于:2008-09-11 16:55:02

  C#和Java都是很不錯(cuò)的語言。他們通過類似的方式達(dá)到了類似的目的,盡管C#比Java多出來一些和句法相關(guān)的東西,例如foreach關(guān)鍵字和一些更加讓人高興的擴(kuò)展/實(shí)現(xiàn)架構(gòu)。不幸的是,這些改進(jìn)的光芒被削弱的東西掩蓋掉了。在本文里,我將比較兩種語言,并盡量避免深入到JVM和CLR層。

   Java:無可爭辯地具有C++所有的精華

  在比較Java和C#的時(shí)候,你不可能不注意到它們諸多的相似之處,這在某種程度上要?dú)w結(jié)于它們共同的C和C++。但是,當(dāng)Gosling和他的同事們坐下來創(chuàng)造Java的時(shí)候,他們不僅吸取了C++的能力,而且更重要的是,他們減掉了一些無用特性,后者讓C++更容易出錯(cuò)誤而且更難學(xué)習(xí)。C#的設(shè)計(jì)者加入了很多C++的特性,而Java也加入了這些特性,但是C#卻沒有去掉C++的糟糕的一些特性。其結(jié)果就是這樣一門語言,它仍然為所有人提供了所有的特性,但其結(jié)局是內(nèi)部沖突不斷,而且過于復(fù)雜。

  散漫的句法缺陷

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

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

   C#在安全上的削弱

  C#有一個(gè)用于將代碼區(qū)域標(biāo)示為不安全的簡單機(jī)制。在這些不安全的區(qū)域里,Java以及后來的C#安排到位了一些安全措施,用以防止程序員直接修改內(nèi)存位置,以及使用點(diǎn)運(yùn)算,但是這些措施是值得懷疑的。在使用具有垃圾清理功能的語言時(shí),如果下到內(nèi)存地址這一層,就會把對象/內(nèi)存之間有意作出分離弄混。錯(cuò)誤就會容易出現(xiàn),調(diào)試成了惡夢,緩沖區(qū)溢出再次抬頭,C和C++里的安全漏洞再次現(xiàn)身。

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

  SOAP的集成

  C#,及其更大的擴(kuò)展.NET,已經(jīng)同SOAP Web服務(wù)緊密地集成在一起。SOAP是使用XML指定參數(shù)和結(jié)果值來進(jìn)行遠(yuǎn)程過程調(diào)用的好標(biāo)準(zhǔn),但是它并不是的方式。利用用于Web服務(wù)的外部庫能夠允許Java開發(fā)人員輕易地更改其Web服務(wù)的風(fēng)格,使其成為SOAP、XML-RPC,或者什么還沒有發(fā)明的東西。當(dāng)然,C#的開發(fā)人員總是能夠選擇將外部庫用于SOAP的Web服務(wù),但是由SOAP標(biāo)準(zhǔn)的緊密集成所造成的限制要比它能夠做的東西更多。

  所有者的恐慌

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

  而Java語言則相反,不是ECMA標(biāo)準(zhǔn)的,真可惜Sun沒有遵從這一標(biāo)準(zhǔn)。但是,它是可以實(shí)現(xiàn)的,而且沒有的阻礙,其虛擬機(jī)和類庫都有來自第三方的開放和封閉源代碼的實(shí)現(xiàn)。C#看起來是的,其實(shí)不然,而Java看起來限制很多,但是它能夠依據(jù)法律通過的途徑來實(shí)現(xiàn)。

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

  不是那么差,但是還不是Java

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

   



  
關(guān)鍵詞:看看C#與Java相似之處的對比AWAYBUILD

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!