自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

選擇Java還是.NET

開發(fā) 開發(fā)工具
這篇文章只是個(gè)引子,歡迎更多的.NET和Java社區(qū)成員加入到討論中,適當(dāng)?shù)臓?zhēng)論和探討是必要的,這樣技術(shù)社區(qū)才能進(jìn)步。

我雖然是個(gè).NET程序員,也略懂Java,但本文我會(huì)盡可能的寫得中立些,這篇文章是寫給我的一位朋友看的,前兩天吃飯他問起是否要轉(zhuǎn)Java(以前他們一直是.NET),當(dāng)時(shí)呢我的觀點(diǎn)并不中立,我說了很多.NET的好話(當(dāng)然我是擺了不少事實(shí)的,我朋友也不是這么好忽悠的),但技術(shù)人員應(yīng)該拿數(shù)據(jù)說話不是嗎?其實(shí)這個(gè)話題是個(gè)非常老的話題,很多技術(shù)中層也回答過類似的問題,可能這些問題來自從高層、朋友或者網(wǎng)絡(luò),但我并沒有看到過一篇很中肯的帖子來分析這個(gè)問題,于是我斗膽決定給大家開個(gè)頭。

首先,引用一份Forrester Research公司的數(shù)據(jù)(雖然數(shù)據(jù)比較早),在2004年,Java在生產(chǎn)工具、電信、金融和保險(xiǎn)領(lǐng)域比.NET強(qiáng),而.NET在制造、零售批發(fā)、媒體、商業(yè)服務(wù)和公共服務(wù)領(lǐng)域比Java強(qiáng)。報(bào)告指出那些在IT方面有高預(yù)算的公司更傾向于使用Java,而相對(duì)預(yù)算較少的則更傾向于使用.NET。但很有意思的一件事情是超過半數(shù)的受訪公司同時(shí)使用.NET和Java,要知道2004年的時(shí)候.net 2.0剛出來,就已經(jīng)有這么多公司同時(shí)用兩樣了,我覺得現(xiàn)在的情況也沒有明顯變化,比如我現(xiàn)在的公司就是兩樣都用,當(dāng)然一個(gè)團(tuán)隊(duì)通常只用一樣,只是不同的團(tuán)隊(duì)可能會(huì)用不同的語(yǔ)言。

接著來說說跨平臺(tái)。說到跨平臺(tái)很多人可能想都不想就說,那肯定應(yīng)該選Java,我一開始也是這么想的。其實(shí)時(shí)代在進(jìn)步,.NET的跨平臺(tái)能力正在不斷增強(qiáng),最有代表性的自然是Mono開源項(xiàng)目,相應(yīng)的開發(fā)工具M(jìn)onoDevelop也做的很出色。當(dāng)然Mono的使用是存在局限性的,很多Windows固有的特性是沒有辦法使用的,例如COM, Win32 API等,但同時(shí)Mono提供很多上層封裝,能夠幫助我們忽略平臺(tái)差異。就目前來看,Java在跨平臺(tái)方面肯定是占優(yōu)勢(shì)的。

接著是性能比較。說實(shí)話如果我在這里給任何一方的語(yǔ)言下一個(gè)結(jié)論,估計(jì)雙方的技術(shù)人員都要跳起來。性能這個(gè)問題在兩種語(yǔ)言之間是很難進(jìn)行比較的,理由很簡(jiǎn)單,因?yàn)槠脚_(tái)不同、硬件不同、安裝的軟件也不同、使用的庫(kù)也不同,太多的不確定因素導(dǎo)致無法在完全平等的條件下比較單個(gè)項(xiàng)目的性能。也許某個(gè)性能問題并非語(yǔ)言本身造成的,而是庫(kù)函數(shù)造成的,這都是有可能的。我參考了一些評(píng)論認(rèn)為,.NET程序的啟動(dòng)速度快于Java程序,這應(yīng)該是有目共睹的,看看Ecllipse和VS的啟動(dòng)速度大家就明白了(雖然VS2010啟動(dòng)速度確實(shí)坑爹了點(diǎn),還好VS2012打了個(gè)漂亮的翻身仗)。我個(gè)人感覺Java程序的運(yùn)行速度確實(shí)不快,其實(shí)你看看很多大公司怎么玩Java的就知道了,他們拿Java做殼,內(nèi)部全部用C++寫,比如Oracle、IBM,要知道Java和C++的組合可是非常有名的。不過么回過頭來想想微軟也是如此,.NET主要做周邊的應(yīng)用,Windows核心還是C/C++的,不過最近幾年微軟也開始用.NET做很核心的東西,比如Visual Studio2010和2012就是用WPF 4.0寫的。不過這個(gè)問題,沒有結(jié)論,大家自己看著辦吧,遇到這種沒有標(biāo)準(zhǔn)的問題,適當(dāng)忽悠也是必要的,其實(shí)能反駁.NET或Java性能不好的案例都很多,具體看場(chǎng)景。拿我的親身經(jīng)歷來說,.NET的XML庫(kù)的性能真的不是一般的差,相對(duì)來說Java的XmlBean更勝一籌。

再接下來,我們來看一下擴(kuò)展性。這兩種平臺(tái)擴(kuò)展性都很好,上層封裝都支持最新的SOAP協(xié)議和Web service,自身還有自己的通訊協(xié)議,如Remoting和RMI。這恐怕是少數(shù)幾個(gè)大家都能達(dá)成共識(shí)的觀點(diǎn),即Java和.NET擴(kuò)展性都很好。雙方陣營(yíng)都有優(yōu)秀的架構(gòu)師們坐鎮(zhèn),確保了開發(fā)人員能夠從架構(gòu)層面對(duì)語(yǔ)言和平臺(tái)進(jìn)行擴(kuò)展。只可惜國(guó)內(nèi)現(xiàn)在.NET陣營(yíng)的架構(gòu)師不太給力,導(dǎo)致很多決策層放棄選擇.NET(各位國(guó)內(nèi)的.NET架構(gòu)師聽了不要不開心哦,我只是說事實(shí),沒有別的意思)。國(guó)外其實(shí).NET和Java各分秋色吧,因?yàn)榫驼Z(yǔ)言本身的擴(kuò)展性而言實(shí)在找不出有什么明顯限制,關(guān)鍵還是看用它來干什么,還有就是架構(gòu)怎么搭建。

然后是開放性,這一點(diǎn)恐怕.NET要完敗于Java了,盡管近幾年微軟加大了對(duì)開源的支持力度,例如codeplex網(wǎng)站就搞得很紅火,且通過與DeveloperMedia合作給開發(fā)人員帶來了不少?gòu)V告收入,但問題還是出在微軟本身的開放性上,自家的.NET全部閉源,只有ASP.NET MVC開源。盡管Mono團(tuán)隊(duì)已經(jīng)基本上可以說成功復(fù)制了.NET,但很多東西是從盒子外分析得出的,當(dāng)然這是我的個(gè)人觀點(diǎn)。Java的開放性不僅體現(xiàn)在其語(yǔ)言開源本身,更多的是來自第三方的支持力度,大量開源項(xiàng)目的支持,例如Apache基金會(huì)的頂級(jí)項(xiàng)目,如poi.apache.org,使得更多的公司愿意使用java開發(fā),因?yàn)閿U(kuò)展成本可能要比.NET低不少,不需要萬(wàn)事親歷親為。

最后,我們來看一下總體擁有成本(Total Cost of Ownership)。說實(shí)話,這是個(gè)很難回答和界定的問題,因?yàn)橥耆珱]有標(biāo)準(zhǔn),有些公司更看重雇傭成本,有些則更看重設(shè)備成本或培訓(xùn)成本。來自stackoverflow評(píng)論中的一個(gè)觀點(diǎn)認(rèn)為Java的初期擁有成本相對(duì)于.NET要低,因?yàn)橛写罅康拈_源項(xiàng)目和工具可以幫助降低開發(fā)成本。.NET的產(chǎn)品前期都需要自行開發(fā)很多基礎(chǔ)庫(kù),因?yàn)殚_源項(xiàng)目和第三方工具相對(duì)較少,這是.NET初期擁有成本高的原因。.NET的開發(fā)速度確實(shí)比Java快很多,特別是前期出樣階段,這得益于微軟強(qiáng)大而簡(jiǎn)單的IDE,說句不好聽的,就算不懂技術(shù)的項(xiàng)目經(jīng)理也能自己用VS畫個(gè)界面出來,你信嗎?雇傭成本方面,隨著C#的排名不斷上升,.NET的雇傭成本會(huì)不斷降低(其實(shí)原來就低,因?yàn)榇蟛糠质褂?NET的公司不算特別有錢,除了微軟),語(yǔ)言排名是個(gè)風(fēng)向標(biāo),排名高的語(yǔ)言會(huì)得到高校的青睞,從而會(huì)有更多人才專向該語(yǔ)言,最典型的例子就是Pascal的排名,你看當(dāng)年學(xué)校里Pascal多流行,現(xiàn)在排名里根本看不到,高校自然也放棄了。設(shè)備成本目前來看基本差不多,畢竟是語(yǔ)言,不是特別依賴硬件設(shè)備的。當(dāng)然有人覺得Windows+SQL Server的組合授權(quán)費(fèi)很高,這個(gè)也是不真的事實(shí),這也是我朋友想換Java的原因之一,為了降低成本,也許你應(yīng)該考慮用NoSQL或者M(jìn)ySQL作為備份方案,要知道高性能方案可都不是SQL Server和Oracle這種關(guān)系數(shù)據(jù)庫(kù)搞出來的,你看看淘寶和新浪的架構(gòu)就知道了。

最后給大家娛樂娛樂,這是一段搞笑的來自Java陣營(yíng)的視頻,結(jié)論么大家懂的,肯定是選Java,http://www.220.ro/funny/Microsoft-Vs-Java/Iw8nmDHL7Y/(需翻墻),注意2分43秒有亮點(diǎn)哦。

 

這篇文章只是個(gè)引子,歡迎更多的.NET和Java社區(qū)成員加入到討論中,適當(dāng)?shù)臓?zhēng)論和探討是必要的,這樣技術(shù)社區(qū)才能進(jìn)步。

原文鏈接:http://www.cnblogs.com/tonyqus/archive/2013/01/15/java_vs_dotnet.html

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2014-03-31 10:47:49

PHPASP.NET

2020-10-12 17:40:34

.NET Core開發(fā)技術(shù)

2024-10-05 00:00:15

ArrayList性能Java

2013-01-05 13:21:44

ASP.NETHttpHandlerHttpModule

2009-06-30 15:22:00

Java還是.NET

2013-05-30 13:30:00

代碼效率程序員

2013-07-04 14:54:24

Android

2023-11-09 09:13:48

GraphQLAPI 架構(gòu)

2019-11-01 10:27:48

GoJava語(yǔ)言

2019-10-31 17:06:59

開發(fā)技能代碼

2009-06-19 13:31:39

GETPOSTAjax

2020-07-01 14:05:21

麥肯錫機(jī)器人從業(yè)者

2013-06-08 09:05:06

2019-07-05 15:45:39

UbuntuFedoraLinux

2015-08-19 10:13:53

DaasVDI

2009-07-02 09:25:15

選擇Hibernate

2012-06-14 10:06:43

創(chuàng)業(yè)動(dòng)態(tài)語(yǔ)言靜態(tài)語(yǔ)言

2013-10-17 11:24:46

信息泄露防護(hù)溢信科技

2023-03-11 22:45:15

物聯(lián)網(wǎng)供電技術(shù)以太網(wǎng)

2020-03-24 07:40:00

RabbitMQKafka架構(gòu)師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)