與其爭論java和.net的差異,還不如多想點用編程技術掙錢的方式

    年前和最近,我發如今博客園和其它地方,有很多爭論java和.net哪一個好的文章,其實這是種好現象。雖然到了架構層面,技術是通用的,但兼聽則明,並且技多不壓身,多種掙錢的方式總不會錯。html

    本人最近主攻Java,最近在這方面也出了兩本書,Java Web輕量級開發面試教程Java核心技術及面試指南,但以前也講過.net課,並且以前和別人創業時,用的也是.net,體會下來,語言只是掙錢的手段,關鍵是要看怎麼用它們掙錢,也就是學習進階和掙錢的方式。java

    本文將結合自身和聽到看到的經歷,不只將從語言使用的角度來講明這兩種語言的異同點,更將從提高能力接活掙外快的方面說明這兩種語言的做用,相信你們在看完後會感嘆:其實爭論不必,關鍵要選擇適合本身的方式。python

1 入門時,語法有差異,因此不能拘泥細節

     對於初學者而言,.net和java語法就像天書同樣,一方面很難懂,另外一方面調試起來也很困難,若是要本身寫段能經過編譯的代碼,很是困難。若是同時學Java和.NET,估計更會一頭霧水。nginx

     其實磨刀不誤砍柴工,對於初學者而言,不論學哪一種語言,都應該深刻考慮這個問題:高級開發或架構在用這個語言時,通常會用到哪些特性?換句話說,這種語言能怎麼幫到我?我是學Java的,就從Java角度來回答這個問題,我相信.NET的回答應該會是一樣精彩。面試

    1 Java主要用在架構方面,經過Spring MVC等架構能優化開發時間。   數據庫

    2 經過引入各類組件,好比nginx等,能實現高併發分佈式的功能。編程

    3 目前Java主要用在互聯網高併發等場景,並且在處理大數據方面有必定的優點。性能優化

    對於初學者來講,瞭解到上述知識點並不費勁,但一旦瞭解後,就能夠在入門階段不走彎路,好比別過多拘泥於加減乘除循環之類的語法,跟不會去學Swing之類的用不到的技術。網絡

    雖然在入門階段,Java和.net語法差異點很多,但若是不拘泥於細節,會發現開發的模式就像搭積木:用不一樣的API去組裝實現各類功能,咱們須要關注的是各類函數以及參數有什麼做用,該如何使用。 數據結構

    但若是硬要列出二者誰好誰話,這自己就有問題,由於這樣一來,會讓本身過分深刻語法,就比如學英語時過多關注單詞,語法自己實際上是相通的。

    在我以前和如今的公司裏,我見過很多從.net轉到java的,問他們當時轉型用了多久?通常最多不會超過3個月,前提是.net技能都已經精通。

2 作項目時,其實已經模塊化,差異的只是API

    當初學者開始作第一個商業項目的時候,會發現所接觸到的知識點很是有限,好比數據庫相關,MVC架構相關(如何在三者之間傳數據),外帶些數據結構(好比Java集合) 。

    並且,項目經理和架構師已經把項目的外型框架搭建好了,連數據庫以及先後臺交互的方式也無需管了,開發者作的更多的是模仿,仿照別人作的模塊中的流程,開發本身的模塊。

    在這個層面上,Java和.NET雖然開發用的IDE不一樣,打包部署上線的方式也不一樣,但在開發過程當中,因爲框架已是現成的,因此相差的仍是API。

    相信大多數的項目經理會說,管理Java和.net項目的方式其實差很少,而二者的差異,大多已經經過框架和模塊掩蓋掉了。

    以前我在外企,項目經理都是一個項目作好就換另一個項目,我也見了很多項目經理同時管理java和.net的多個項目,也沒發現他們所以而混淆。並且,作項目時,編碼佔的比例也不大,其它還有分析需求,設計架構和流程,和測試等人員聯調,估計編碼的工做量也就佔個3成,要討論只佔這麼點比例的開發語言哪一個好?沒意義且佔時間。

3 二者的差異其實體如今項目背景上

    以前主要說的是,從技術上來看,兩種語言差異不大,並且從架構角度上來看,一些基於分佈式高併發的技術,經過兩種語言都能實現。  

    凡是存在的,必是合理的,那麼目前沸沸揚揚的Java與.NET之爭緣由何在呢?

    我的觀點,體如今項目背景上,面向不一樣需求和開發成本的項目,或許java/.net確實有些優點。

    好比,某項目是套基於桌面的管理系統(成本管理機器管理均不論),是應用在一個公司裏,那麼.NET是個比較好的選項。

    又如,某項目是個併發量比較小的網站,好比社區門戶外帶簡單的動態數據,那麼JSP便可。

    再如,若是是個高併發的項目,並且本公司的其它項目都是基於Java,那麼可能會用到Java裏的一些框架。   

    或者,某人以前作了很多.net項目,有現有的技術積累,再作個私活,用java和.net均可,那麼可能就選.net了。

    也就是說,兩種語言沒有優劣之分,只有更適用,再具體來說,用哪一個語言成本更低,開發週期更短。

4 到了架構級別,更多得考慮底層實現,不多顧及語法點

    本人勉強到了架構師級別(但自認爲若是用高級開發的標準,本人應該屬於優秀),在我眼裏,兩種語言真沒差異,我相信大多數的架構師或高級開發應該有相同的觀點。

    由於在這個級別,須要考慮的不只僅是如何用語法實現功能點,並且如何性能調優和解決高併發問題。我列些最近咱們組架構師解決的問題。

    1 直接訪問數據庫太慢了,須要用MyCAT進行分庫。

    2 網絡通信,用http協議,有三次握手,且http報文頭有些長,須要用tcp協議。

    3 業務上,兩套表須要相互同步數據,這就得用到mq集羣。

    以上爲例,在這個程度,基本已經不多考慮兩種語言的差異,或者能夠這樣說,我之說以在框架層面選用java,是由於該項目主要是基於Java的,而不是某些功能只有java實現,反之亦然。 

5 最近我見到值錢的技能,語法只佔了不多比例,因此二者都能掙錢

    最近比較流行收費課程,我最近在學玩 轉Spring全家桶(https://time.geekbang.org/course/intro/156) 這門課程,也瞭解了很多基於.NET的課程,最近也打算本身搞個收費課程。

    在這個過程當中,我發現若是在課程中,只講差別性的語法,估計不會有市場,由於這些課程都是基於項目管理或者是框架的。我瀏覽了一些基於Java和.net的框架教程,發現分佈式框架的要點都基本類似。

    從這個角度來看,在選型java和.net的時候,千萬不能事先有成見,好比認爲哪一種語言很差,或者哪一種語言絕對不適合某種場景,由於這樣就至關於給本身畫地爲牢,約束了本身的發展前景。

6 不拘一格去掙錢

    學編程語言是爲了掙錢,這裏給出些通常的掙錢方式。

    1 首先固然仍是作好本職工做,具體來講,就是認真地把編程語言結合業務背景,而後再深挖性能優化和架構級別的技能,讓本身儘快達到高級開發或架構師的水準。

    2 若是感受還有餘力,就去找些外快,好比作項目寫書作講課老師或者開視頻教程,不知道渠道怎麼辦?網站搜外帶羣發郵件,若是身邊有人已經作得很好了,就趕忙請教。

       我在博客園裏就見到很多講掙錢的文章,並且博客園裏的圖書編輯和負責出視頻教材的人也很多,因此博客園內部的資源就很多。

    就拿外包項目來講吧,基於java和.net的都有,並且各層次各成本的都有,因此說,與其爭論,還不如多找找掙錢渠道,或者乾脆多看點資料讓本身快進步。

7 總結和求推薦

    原本這篇文章應該是年後第一週(也就是上週)發表的,但事情太多,推遲了一週,但自感受沒所以下降寫文章的標準。

    在上文裏,更多地是從技術和架構來表述兩種語言的差異,而最近我看了很多身邊的人本身創業,他們掙錢的方式,也是和語言無關的。

    好比到各類兼職外包網站接活,好比出視頻教程,又如出去培訓講課,或者接項目本身來作,這些掙錢的方式裏,更多考慮的是成本和週期,各類項目的甲方,也不會由於開發語言是java而多給錢。

    因此,爭論語言的差異,乃至爭論語言的好壞,真的不必,有時間爭論,還不如出去掙點外快,若是不知道渠道,就到網上找,若是感受缺乏掙外快的能力,就趕忙學。

    最後,祝各位用java的.net的python的(還有各類其它語言的)夥伴們技術日益進步,多多發財。

    若是你們感受本文不差,請點擊下方的按鈕推薦本文,你們的推薦是對本人最大的激勵。

相關文章
相關標籤/搜索