如何將Node與現有的架構融合以面對新的無線場景,并更好地提升開發效率,我們主要闡述了在當前成熟的體系下向Node演進的一個思緒,當然這并不是唯-途徑。也有很多程序員討論能否要將后端的Java體系全部交流為Node體系,這就觸及Java技術棧和Node技術棧的比較,以下是筆者關于該問題的思索。
我們從言語特性、開發效率和本錢要素三個方面比較Java與作為后來者的Node。
1.言語特性
Javascript作為Node上運轉的言語,和Java相比,優缺陷很明顯。Javascript 語法簡單,很容易編寫基于事情的驅動的完成,但是Javascript 基于面向對象的描畫才干偏弱,不像Java是真正的面向對象言語,同時Javascript對數據類型的定義也比較單一,要么是數值類型要么是字符類型。很明顯,Java 更擅長構建復雜邏輯的大型應用程序。在言語運轉效率上,Javascript 原本是解釋執行,Java是編譯執行,但由于Node做了優化,所以兩者運轉效率差別不大。
2.開發效率
開發效率可以從言語的復雜度、程序員培育、開發工具包的豐厚性以及編碼效率幾個方面比較。
●言語的復雜度。從開發角度來看,Java和Javascript都不需求關心內存的管理,都是基于虛擬機來管理內存;從并發角度來看, Javascript是基于事情觸發的,而Java是基于線程的,因此Javascript更占優勢;此外,Javascript是無阻塞IO的,在I/O效率上比Java有優勢(固然Java8也將更好地支持異步I/O)。
●程序員培育。目前Java 言語仍然是僅次于C言語的第二大編程言語,而Javascript排在第10位,Java 程序員隊伍要比Javascript大很多,很顯然招聘Java程序員要比招聘Javascript程序員更容易。
●開發工具包。很多時分-個言語的開發效率要看這個言語的支持工具包和組件的豐厚性,Java 經過這么多年的展開,工具類庫曾經非常豐厚,幾乎任何你想要的工具類庫都能在網上找到。Javascript 固然也展開了很長時間,但是基于Javascript的工具類庫主要集中在前端,能夠直接用于Node的仍然很少。當然Node的社區非常生動,可以預見Node的工具類庫增長也會非常疾速。但是要抵達Java的范圍尚需時日。
●編碼效率。Java 言語的運轉基于JVM,但是Java的部署效率稍差; Javascript使測試愈加簡單,但是debug機制仍然不完善。
3.本錢要素
前面主要是從技術角度思索,但是假設要從成熟的Java體系遷移到Node,本錢也是一個重要的思索要素。
首先是學習本錢。假設公司大部分是Java程序員,往常要遷住Node,很明顯這個學習本錢會非常龐大,即使這個遷移是漸進式的,長期來看仍然是要將一部分Java程序員交流成 Javascript程序員。先不管程序員是公司內部培育的還是從外部招聘的我們都可以算一下公司招聘一名程序員的本錢有多大:一名普通工程師的年薪假定為10萬元,獵頭費普通是年薪的20%以上,也就是2萬元、再加上一個月的實習本錢1萬元,加在一同約3萬元。這關于有1萬名以上開發人員的大公司而言,人力本錢不可思議。假設招聘應屆生,由于應屆生的培育周期更長,學習本錢會更高。
其次是環境本錢。公司的基礎效勞產品如中間件是基于Java開發的,假設要交流成 Javascript,必然要再另外開發,還得開發配套的運維工具等,這個本錢也不可思議。最后是維護本錢。Java和 Javascript i都是基于容器運轉的,和V8引擘相比,程序員顯然對JVM更熟習。另外,從排查詢題的難易程度來看,針對JM的工具顯然更完善。
4.人的要素
關于一家成熟的公司而言,假定現有的Web系統都改用Node完成、必然會有很多Java工程師要從事Node的開發,由于已有的前端工程師人數肯定支撐不了現有業務的展開。我們假定一部分Java工程師愿意學習 Javascript并成為全棧工程師,那么他們能否也愿意用兩種不同的言語完成同一個任務呢?正常來說,假設能用同一個任務分紅神不同的方式來完成的必要性就會大打折扣。所以從這些角度來看,要讓一家很成熟的公司切換言語是非常困難的。
固然交流技術棧很困難,但是無論如何都應該統一技術棧,特別是主流的網站樹立業務開發,更應該運用統一的技術棧這就像秦始皇統一言語一樣所帶來的好處顯而易見。
更多精彩請關注:http://www.jukabz.cn