想發(fā)展全棧學(xué)nodejs還是舍棄java?
從題主的描述來(lái)看,你是有潛力往全棧方向發(fā)展的。個(gè)人不建議舍棄java,因?yàn)閚odejs雖然使很多前端工程師也能開(kāi)發(fā)服務(wù)器,但是落實(shí)到實(shí)際的大中型服務(wù)器,nodejs還是有局限性的,接下來(lái)我們分別來(lái)分析nodejs與java在后端開(kāi)發(fā)的角色。
nodejsnode.js其實(shí)是一個(gè)讓js運(yùn)行在服務(wù)端的開(kāi)發(fā)平臺(tái),使得js在編程界的地位一躍與php,Python等等稱(chēng)兄道弟,并且能夠利用JavaScript的v8引擎動(dòng)態(tài)的編譯與運(yùn)行。
它的優(yōu)點(diǎn)可以簡(jiǎn)要概述為3個(gè):
1 nodejs支持RESTful API,并且可以在自身是單線程的限制下,實(shí)現(xiàn)對(duì)任務(wù)的并發(fā)處理(通過(guò)事件循環(huán)來(lái)達(dá)到這個(gè)目的)。
2 同時(shí),它非阻塞模式的IO處理使得它能夠在相對(duì)低系統(tǒng)資源消耗的情況下展示出較高的性能以及負(fù)載能力,最適合做依賴(lài)其他IO資源的中間層服務(wù)。
3 最后,nodejs的開(kāi)發(fā)要比Java快,運(yùn)行效率也要高。
因此自從2009年誕生后,就一直非常受到前后端開(kāi)發(fā)者的青睞。
但是nodejs也有缺點(diǎn),那就是由于它不是靜態(tài)型語(yǔ)言,要在運(yùn)行時(shí)候才能知道類(lèi)型錯(cuò)誤,無(wú)形中增加了調(diào)試成本。而且nodejs在面對(duì)大型項(xiàng)目的時(shí)候,容易出現(xiàn)混亂,比如知道有問(wèn)題,但是一時(shí)半會(huì)卻定位不到問(wèn)題發(fā)生點(diǎn)的情況。
JavaJava可以說(shuō)是互聯(lián)網(wǎng)+時(shí)代下PaaS概念的完美支持者。PaaS(Platform-as-a-Service)意為平臺(tái)即服務(wù),就是說(shuō)現(xiàn)在越來(lái)越多的產(chǎn)品是以網(wǎng)頁(yè)的形式來(lái)提供服務(wù),而不是一定要安裝一個(gè)軟件在你的電腦上。這種情況下,Java利用SSM,SPRING BOOT等框架,就作為server端的編程語(yǔ)言大展身手了,借助這些框架,就算是初學(xué)者也能快速開(kāi)發(fā)出一個(gè)穩(wěn)定而復(fù)雜的java web項(xiàng)目。
而且,Java的年紀(jì)比nodejs大了一倍還多,一直是編程語(yǔ)言排行榜上的top,這就意味著Java語(yǔ)言有著深厚的積淀以及廣泛的使用,如果使用Java進(jìn)行開(kāi)發(fā)遇到問(wèn)題的話(huà),能夠從網(wǎng)上獲得更多的支持與幫助。
此外,從java本身性能來(lái)看,Java非常適合大型項(xiàng)目的開(kāi)發(fā),而且其安全性與穩(wěn)定性也都是后端語(yǔ)言中的佼佼者。
最后,如果題主曾經(jīng)有過(guò)Java開(kāi)發(fā)經(jīng)驗(yàn)的話(huà),我更加建議題主先回到Java領(lǐng)域深耕,而不是到nodejs這篇藍(lán)海中去探索,因?yàn)槟壳澳軌蚴褂肑ava開(kāi)發(fā)的全棧工程師的用武之地會(huì)比只會(huì)nodejs的工程師更廣闊些。
以上是我的淺見(jiàn),如果對(duì)您有幫助,歡迎給我點(diǎn)贊留言。
我是蘇蘇思量,來(lái)自BAT的Java開(kāi)發(fā)工程師,每日分享科技類(lèi)見(jiàn)聞,歡迎關(guān)注我,與我共同進(jìn)步。