解惑:學.Net還是學Java?

     因爲.Net和Java是國內市場佔有率最高的兩門技術,對於準備學習編程語言的初學者來說,.Net和Java是初學者首先考慮的兩門技術,因此很多人一遍遍的問“學.Net還是學Java”,社區中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一時間硝煙四起,讓初學者更加迷惑。

    做爲一個.Net、Java、Delphi、Python、PHP等語言都進行過有一定複雜度的項目開發的人來說,我對任何一門語言都沒有宗教式狂熱崇拜,因此我也相對理性的對整個問題進行分析。

    從北京、廣州、上海等地區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工程師一個月都招不來幾個”。

 

    .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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章