我會為開源和自由學習,使用JAVA.但我決不會為了開源和自由放棄.NET
關於JAVA與.NET的爭論從來就沒有停止過。相信標題就足於吸引許多人的目光,但我無意在部落格園裡從新挑起一翻新的爭論。但是今天與一位比較有資歷的同事探討起了關於.NET與JAVA的話題,同時自己也在JAVA開源方面有一些需求,因此就有了這方面的思考。
事情過程大概是這樣的,同事希望我們逐步轉向JAVA路線,利用JAVA來實現SOA架構的產品。然後他認為微軟在SOA方面還沒有實質的產品,或者說支援力度還不夠。或許他本身並不是技術人員,但又專注於架構方面。讓他對當前流行的各種最前衛的架構概念比較迷念,說起架構條理清楚,但是從中你卻又明顯的感覺到缺少一些簡單的技術常識。不過,在與之交流過程中,做為一名純粹技術人員的我,卻又收益不少。
首先,我對技術分派是中立的。我使用.NET,並不會對JAVA有任何的敵意。大數人使用哪種技術都與自己的性格,和首次接觸有關。特別是初次接觸的技術,就如初戀一樣,會有種特殊的懷情結在裡面,我就是其中之一。當你在這樣的一條道路越走越遠,雙方的認識越來深的時候,越發的難於放手。但是,除了你的初戀女友外,你能不能對其它的女孩充滿敵意呢?不能!人家漂亮,你還得夸人家漂亮。人家有缺點,你不能老抓著人家的辮子不放。就如同人其實都是一種高階動物一樣,程式語言的本質其實也都是一樣的。.NET和JAVA則更像是同胞兄弟,極其相似,卻又各有不同。
再來說說我對.NET與JAVA一些不同的認識。我認為,兩種技術的不同根本就在於它們所走的社群路線不同。.NET技術,微軟傾向於,一家獨大。它所把握了所有的原始碼,在各種技術上自己都是親力親為,為使用者提供最為完善,統一,整合的產品,力圖最大限度減輕使用者的負擔,給使用者友好的入門和使用機會。而JAVA開源所有的原始碼,讓使用者充分參與進來,讓使用者有充分的自由去控制這些原始碼,在重要的技術概念和產品上,也是由於大產商支援,而不是一手包辦,發揮集體的力量來完善這個平臺,調動每個人的積極性。所以JAVA社群資源得到了極大的豐富。
這樣就會造成,有的人認為微軟技術很簡單,很好入門,沒有技術含量,如果這時他有更高的“理想”的話,那麼他可能會轉投JAVA,去挑戰JAVA給自己帶來的那種技術上的滿足感。但是當你保持專一的態度,選擇繼續牽手,繼續努力的話。你慢慢就會認識到,真正的挑戰其實就在後面,當你接受了這種挑戰,你就會得到更大的滿足感。當然,也有很多在使用.NET平臺,卻終始在使用入門技術的人。JAVA陣營何嘗沒有呢?從這個角度來說,我認為,.NET與JAVA在技術難度是沒有差別的。如果有人認為.NET很簡單,那麼他對JAVA也是半知不解。
但是為什麼JAVA的力量看似比較強大呢?可能歷史是一方面的因素,但是我認為,開源和自由才是它的成為主流的主要因素。JAVA社群中豐富的產品,使使用者需要什麼東西幾乎都能找到。而在.NET社群卻很難有這樣的待遇。當然,目前.NET社群也在不斷完善,包括開放.NET Framework原始碼,也有很多開源社群產品,但力度還遠遠不夠。正因為JAVA中有大量的開源產品和技術,吸引著大多數人的目光,包括我。很多東西確實是.NET找不到,而JAVA卻比較成熟的。那麼我們當然也可以利用這些開源和自由給我們帶來的便利,進而將它們移植到.NET平臺,比如nHabernate,iBatis.net。但是我還是要重申,我會為了開源和自由,學習和使用JAVA,但是我決不會為了開源和自由放棄.NET。
最後一點,關於架構領域的一些概念。我想並不是JAVA的特有的,它們可能是產生是JAVA陣營,某些JAVA專家。但是這些架構理念,同樣適用於.NET。我並不贊同某些人以此來區別JAVA與.NET,在技術含量上的不同,對.NET報以藐視的態度,我堅定抵制反對。不管什麼技術,人的因素永遠過於技術平臺因素。