中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

選擇Java還是.NET

發布時間:2020-05-20 16:09:46 來源:網絡 閱讀:1905 作者:瞿杰 欄目:編程語言

作者:Tony Qu

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

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

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

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

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

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

最后,我們來看一下總體擁有成本(Total Cost of Ownership)。說實話,這是個很難回答和界定的問題,因為完全沒有標準,有些公司更看重雇傭成本,有些則更看重設備成本或培訓成本。來自stackoverflow評論中的一個觀點認為Java的初期擁有成本相對于.NET要低,因為有大量的開源項目和工具可以幫助降低開發成本。.NET的產品前期都需要自行開發很多基礎庫,因為開源項目和第三方工具相對較少,這是.NET初期擁有成本高的原因。.NET的開發速度確實比Java快很多,特別是前期出樣階段,這得益于微軟強大而簡單的IDE,說句不好聽的,就算不懂技術的項目經理也能自己用VS畫個界面出來,你信嗎?雇傭成本方面,隨著C#的排名不斷上升,.NET的雇傭成本會不斷降低(其實原來就低,因為大部分使用.NET的公司不算特別有錢,除了微軟),語言排名是個風向標,排名高的語言會得到高校的青睞,從而會有更多人才專向該語言,最典型的例子就是Pascal的排名,你看當年學校里Pascal多流行,現在排名里根本看不到,高校自然也放棄了。設備成本目前來看基本差不多,畢竟是語言,不是特別依賴硬件設備的。當然有人覺得Windows+SQL Server的組合授權費很高,這個也是不真的事實,這也是我朋友想換Java的原因之一,為了降低成本,也許你應該考慮用NoSQL或者MySQL作為備份方案,要知道高性能方案可都不是SQL Server和Oracle這種關系數據庫搞出來的,你看看淘寶和新浪的架構就知道了。

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

 

這篇文章只是個引子,歡迎更多的.NET和Java社區成員加入到討論中,適當的爭論和探討是必要的,這樣技術社區才能進步。

參考

http://programmers.stackexchange.com/questions/20255/what-would-you-choose-for-your-project-between-net-and-java-at-this-point-in-ti

http://adtmag.com/articles/2005/05/01/theres-more-to-java-vs-net-than-technology.aspx

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太白县| 栾城县| 田林县| 甘肃省| 遵化市| 东阳市| 原阳县| 饶阳县| 同心县| 萝北县| 浦江县| 江门市| 白河县| 奉贤区| 安多县| 怀宁县| 雅江县| 古浪县| 汉阴县| 吉木乃县| 武安市| 久治县| 武功县| 工布江达县| 乡宁县| 刚察县| 保康县| 阳城县| 连州市| 湖州市| 商南县| 滨海县| 棋牌| 贵定县| 正定县| 达日县| 承德市| 麻江县| 个旧市| 洞头县| 昭平县|