J2SE與c#的幾點(diǎn)比較
最近在學(xué)習(xí)j2se,經(jīng)過(guò)了大約有二十天,把馬士兵老師的J2SE看完了,感覺(jué)這個(gè)老師太幽默了,聽(tīng)他講課不會(huì)走神,時(shí)間的利用率特別高。真心的給馬士兵老師點(diǎn)個(gè)贊,然后再給讓我們學(xué)習(xí)這個(gè)視頻的米老師點(diǎn)兩個(gè)!(世界上不乏美好的事物,缺乏的是發(fā)現(xiàn)美好事物的眼睛?。?。
廢話不多說(shuō)了,看看在這個(gè)視頻中,到底講了那些內(nèi)容。如下圖所示:
可能學(xué)習(xí)過(guò)任何一種面向?qū)ο笳Z(yǔ)言(我學(xué)的c#,c#就是仿照J(rèn)ava,并對(duì)java進(jìn)一步改良)的人,看到這個(gè)圖的第一感覺(jué),都是這些東西基本上不是都學(xué)習(xí)過(guò)嗎,好像只有GUI,JDBC是個(gè)新的東東。
其實(shí)真的是差不多的,反正大部分人認(rèn)為他們是相同的。下邊對(duì)他們進(jìn)行一下比較!
在語(yǔ)法方面,兩者都擯棄了C++中函數(shù)及其參數(shù)的const修飾,宏代換,全局變量和全局函數(shù)等許多華而不實(shí)的地方。
在繼承方面,兩者都采用了更易于理解和建構(gòu)的單根繼承和多接口實(shí)現(xiàn)的方案。在源代碼組織方面,都提出了聲明與實(shí)現(xiàn)于一體的更好的邏輯封裝。
在基本類(lèi)型和單根繼承的對(duì)象之間的類(lèi)型統(tǒng)一方面C#提出的box/unbox要比Java的包裝類(lèi)顯得高明,效率也要好。
面向組件無(wú)疑是當(dāng)代軟件開(kāi)發(fā)的主流。C#對(duì)組件編程甚至到了"迷戀"的地步,這與6年前就出道的Java不可同日而語(yǔ)--當(dāng)然這是時(shí)代問(wèn)題。C#通過(guò)屬性,索引器,委派,事件,操作符重載,特征,版本等實(shí)現(xiàn)了其對(duì)組件編程的第一手的支持。雖然這些在Java中都可以通過(guò)方法,接口或者適配器來(lái)間接地實(shí)現(xiàn),但軟件業(yè)的歷史告訴我們這無(wú)論對(duì)編程效率或者邏輯設(shè)計(jì)都是一種極大的損傷--高級(jí)語(yǔ)言首先面對(duì)的是人,而不是機(jī)器。除去這些語(yǔ)言層面的組件支持機(jī)制,.NET平臺(tái)也為組件的配置,運(yùn)行,管理等提供了一攬子解決方案,而為組件開(kāi)發(fā)量身定做的Visual Studio.NET更是令人興奮,這都為C#的組件編程開(kāi)辟了廣闊的天地。在其他技術(shù)方面Java的微弱劣勢(shì)尚且可以忽略不計(jì),但在組件編程方面Java相較于C#卻有著不可治愈的硬傷。尤其對(duì)于從C++和Visual Basic背景過(guò)來(lái)的開(kāi)發(fā)人員,C#在這方面有著不可抵擋的魅力和誘惑。
在跨平臺(tái)方面,Java的支持和實(shí)現(xiàn)都是為人稱(chēng)道的,雖然JVM的速度仍然讓人備感頭疼。而C#雖然在底層構(gòu)造方面對(duì)移植性進(jìn)行了充分的考慮,但至少目前還沒(méi)有成熟的,經(jīng)過(guò)檢驗(yàn)的產(chǎn)品。C#在跨平臺(tái)方面似乎更熱衷于XML Web Services互操作,而不是跨平臺(tái)編程。但C#通過(guò)其基礎(chǔ)語(yǔ)言構(gòu)造(CLI)對(duì)二十多種主流語(yǔ)言的對(duì)象級(jí)的互操作支持,又極大地提升了C#的技術(shù)地位。和COM組件廉價(jià)地互操作也為C#掙到不少分?jǐn)?shù)--保持一個(gè)兼容的體系對(duì)現(xiàn)代軟件工業(yè)非常重要,也是對(duì)廣大開(kāi)發(fā)人員負(fù)責(zé)任的表現(xiàn)。
當(dāng)然兩個(gè)語(yǔ)言的全面的技術(shù)品評(píng)絕非僅僅上述幾點(diǎn)簡(jiǎn)單的羅列比較,其后端平臺(tái)(C# for .NET, Java for J2EE),及其編程框架的支持,各語(yǔ)言相關(guān)工具的實(shí)現(xiàn),現(xiàn)有的系統(tǒng)基礎(chǔ)等等都對(duì)程序設(shè)計(jì)語(yǔ)言的發(fā)展產(chǎn)生相當(dāng)?shù)挠绊?。從純技術(shù)角度來(lái)講,C#無(wú)疑較Java更具競(jìng)爭(zhēng)力。爭(zhēng)吵誰(shuí)抄襲誰(shuí)也沒(méi)有意義--技術(shù)的發(fā)展本來(lái)就是一個(gè)相互借鑒的過(guò)程。純技術(shù)較量也并不能決定這場(chǎng)論戰(zhàn)的勝負(fù)--如果非要一決雌雄的話。軟件界倒樂(lè)見(jiàn)競(jìng)爭(zhēng),經(jīng)過(guò)市場(chǎng)錘煉的技術(shù)才能更好地為我們服務(wù),讓我們拭目以待!
- J2EE 開(kāi)發(fā)購(gòu)物網(wǎng)站 經(jīng)驗(yàn)篇 - 建表
- J2SE中的序列化的認(rèn)識(shí)
- [J2SE]Java中3DES加密解密調(diào)用示例
- J2ME/J2EE實(shí)現(xiàn)用戶(hù)登錄交互 實(shí)現(xiàn)代碼
- JAVA幫助文檔全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
- J2EE項(xiàng)目代碼編寫(xiě)規(guī)范分享
- Eclipse配置Tomcat和JDK步驟圖解
- 在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程
- J2ME編程中的幾個(gè)重要概念介紹
- JDK、J2EE、J2SE、J2ME四個(gè)易混淆概念區(qū)分
相關(guān)文章
JAVA中重寫(xiě)(Override)與重載(Overload)的相關(guān)示例
這篇文章主要給大家介紹了關(guān)于JAVA中重寫(xiě)(Override)與重載(Overload)的相關(guān)示例,重寫(xiě)(override)和重載(overload)是兩種不同的方法重用技術(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10Java RPC框架如何實(shí)現(xiàn)客戶(hù)端限流配置
這篇文章主要介紹了Java RPC框架如何實(shí)現(xiàn)客戶(hù)端限流配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Java中的synchronized和ReentrantLock的區(qū)別詳細(xì)解讀
這篇文章主要介紹了Java中的synchronized和ReentrantLock的區(qū)別詳細(xì)解讀,synchronized是Java內(nèi)建的同步機(jī)制,所以也有人稱(chēng)其為 IntrinsicLocking,它提供了互斥的語(yǔ)義和可見(jiàn)性,當(dāng)一個(gè)線程已經(jīng)獲取當(dāng)前鎖時(shí),其他試圖獲取的線程只能等待或者阻塞在那里,需要的朋友可以參考下2024-01-01Java String字符串補(bǔ)0或空格的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java String字符串補(bǔ)0或空格的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09Java微信公眾平臺(tái)開(kāi)發(fā)(2) 微信服務(wù)器post消息體的接收
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)開(kāi)發(fā)第二步,微信服務(wù)器post消息體的接收,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04SpringBoot結(jié)合Redis實(shí)現(xiàn)接口冪等性的示例代碼
本文主要介紹了SpringBoot結(jié)合Redis實(shí)現(xiàn)接口冪等性的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06