由於.Net和Java是國內市場佔有率最高的兩門技術,對於準備學習編程語言的初學者來講,.Net和Java是初學者首先考慮的兩門技術,所以不少人一遍遍的問「學.Net仍是學Java」,社區中也天天都有「.Net控」在唱衰Java,也有「Java控」在唱衰.Net,一時間硝煙四起,讓初學者更加迷惑。html
作爲一個.Net、Java、Delphi、Python、PHP等語言都進行過有必定複雜度的項目開發的人來講,我對任何一門語言都沒有宗教式狂熱崇拜,所以我也相對理性的對整個問題進行分析。java
從北京、廣州、上海等地區2010年的就業統計數據(因爲沒有找到更權威的數據,這些數據是我對主流招聘網站和技術網站的相關數據進行的並非太嚴謹的分析)來看,.Net和Java的職位數量比例爲2:3,從就業網站和主要技術社區數據來看,2010年.Net和Java的學習人員數量比例爲1:3。從數據上看,.Net的職位絕對數量比Java低一些,不過Java學習人員數量比.Net學習人員高出3倍,所以.Net職位的競爭激烈程度低於Java。程序員
因爲.Net秉承了微軟技術的入門簡單的特色,通過短期的學習就能夠掌握拖拉控件的快速開發方式,不少人被.Net的快速開發方式所知足,認爲本身「學成了」,再也不深刻研究,所以人才市場上充斥着不少只會拖控件、而不懂.Net更深刻一步技術的.Net開發人員,好比不少ASP.Net的書上都是講ASP.Net服務端控件,不少所謂「精通ASP.Net」的人連什麼是Http、HTML、JavaScript、Dom等基本概念都稀裏糊塗,實際公司項目中不少功能點的實現不是簡單的拖一個ASP.Net服務端控件就能搞定的,所以看似學習.Net的人很是多,可是真正知足企業要求的人則比較少;而Java則入門門檻比較高,若是想要配置一個Hello World級別的學習環境就會涉及到不少技術,開發環境也要學習者自行配置,對於初學者來講可能花費一週時間都沒法配置一個最簡單的環境出來,Java的開發環境也不像.Net開發環境那麼可用性強,Java和.Net的區別就像Windows和Linux的區別,正由於Java學習門檻很是高,不少學習者被淘汰了下來,這樣可以撐過一個個難關學習下來的開發人員都是水平比較高的人員。所以.Net初級開發人員的工資平均是比Java初級開發人員的工資平均略低的。可是因爲.Net中高級人才很是缺少,所以掌握.Net深刻技術的開發人員在企業內部是很是吃香的,招聘人員常常發出這樣的感嘆「招合適的Java工程師能招來一堆,招合適的.Net工程師一個月都招不來幾個」。web
.Net入門快,在.Net中微軟爲開發人員提供了一套最佳的技術架構搭配、集成的開發環境,用微軟的技術架構開發出的系統就能夠保證最好的效果,而不用像Java開發人員那樣去學不少開源框架再去學習搭建技術架構、開發環境,所以.Net學習週期比Java短,有了語言基礎後再進行集訓式的就業班學習,那麼.Net學習者學習3個月能夠進入就業,Java學習者須要5個月能夠進入就業。面試
微軟的本地化推廣工做作得很是好,所以學習.Net有大量的中文資料能夠參考,所以除非研究很高深的領域,不然中文資料基本能知足開發者的需求;而Java因爲走的是高端路線,所以除了初學者資料外,大部分Java資料都是英文的,學習Java須要參考不少英文資料。所以若是英文很是好的學員學習Java就會很輕鬆,而英文不是很好的學員學習.Net會更好。編程
綜上,Java入門門檻比較高,須要有足夠的毅力和百折不撓的精神,只要你能堅持下來你就能夠將不少人在入門門檻上就將不少競爭者甩在身後。.Net入門門檻比較低,裝上VisualStudio就能夠立刻進行開發,不須要進行太多的配置、不須要學太多基礎知識,這樣能夠很輕鬆的掌握入門.Net學習,是有很成就感的事情,能讓你有興趣進一步學習,可是你不能止步於此,所以你會發現身邊也有無數的人也是「輕鬆入門」,你就須要繼續深刻學習,深刻學習一樣須要毅力和探索的精神,你要在這個階段上把絕大部分競爭者甩在身後,小吹一把:我教的有個學生面試回來講「在咱班裏比我感受我掌握的不是太好,可是和一塊兒參加面試的北大某鳥的學生比我簡直就是高手」,呵呵。在我講「.Net入門簡單」的時候,有學生問「.Net把問題都簡化了豈不是.Net程序員都不值錢了?」,個人回答是「微軟簡化的是重複性的東西和低級的東西,這樣咱們就能從這些低級的工做中脫身出來研究更深刻的東西,所以.Net把問題簡化了只是使得那些只沉迷於簡單的東西的人不值錢了,會使得研究深刻的人更值錢」,這就是「.Net入門容易,深刻一樣難」這句話的意思。有人會問「哪些知識屬於深刻的知識呢?」,好比你不只要會用ADO.Net,還要研究ADO.Net架構中的設計模式,再好比你不只要會拖拉ASP.Net控件,更要明白ASP.Net控件內部發生了什麼。這裏容許我作一個廣告,若是你想從學習一開始就儘快脫離控件型開發人員的行列,你能夠跟着視頻教程《傳智播客.Net視頻教程》學習,而後天天登錄博客園等高端.Net社區,你會發現你進步是很是快的。設計模式
可能由於我最近都是在講.Net的課程,對.Net的描述中有或多或少的偏向,可是拋去我的因素考慮,我沒有暗示Java好仍是.Net好,請根據本身的狀況進行選擇。並且.Net和Java並不像360和QQ那樣必須兩者選其一,並不像不少初學者認爲的那樣「學一門語言就靠這門語言吃一生」,工做中極可能這個項目用Java,那個項目用.Net,所以你能夠喜歡某個語言,可是不要抱着一門語言不放,更不用擔憂「Sun被Oracle收購了,Java是否是完了?」、「我學.Net,若是微軟沒落了我是否是就失業了」之類的問題,不一樣語言只是不一樣的工具,換了一個新的工具能夠很快的熟悉新的工具,大部份內容都是相通的,好比java中的web開發很熟悉了,轉而用ASP.Net也會發現大部分東西都是和JavaWeb同樣的,很快就能上手ASP.Net,難道你如今用的是諾基亞手機,你會懼怕諾基亞倒臺你就不會用手機了嗎?「Java完了、微軟死了」這類問題不是開發人員去關心的事情,而是華爾街那些金融大鱷去考慮的問題,我們只管用技術去賺錢養家就是了。架構
原文:http://www.cnblogs.com/rupeng/archive/2010/11/21/1883499.html框架