Nodejs與Java 在C層方面的對比

Nodejs與Java 在C層方面的對比

架構(gòu)

  • Nodejs已經(jīng)有很多生產(chǎn)環(huán)境可用的開發(fā)框架,如eggjs,thinkjs。相關(guān)的進(jìn)程管理,部署,安全,日志系統(tǒng),定時任務(wù),應(yīng)用性能監(jiān)控、orm已有成熟的解決方案。
  • 使用typescript+lint工具,提供類型檢查、代碼規(guī)范,使用jest等工具實現(xiàn)自動化測試,保證應(yīng)用的開發(fā)效率、穩(wěn)定性、可維護(hù)性。
  • Nodejs天生實現(xiàn)了跨平臺,開發(fā)應(yīng)用不需要考慮系統(tǒng)兼容。Java的跨平臺依賴于JVM。
  • Nodejs的部署相當(dāng)方便,多進(jìn)程模型和進(jìn)程通信設(shè)計也非常友好,異常處理和異步語法幾乎可以做到無痛開發(fā),心智負(fù)擔(dān)較低。國際化方面也很好實現(xiàn)。Java開發(fā)需要考慮的更多,線程切換消耗資源,也給開發(fā)者帶來更多的負(fù)擔(dān)。
  • Nodejs可以使用面向?qū)ο蟮姆绞綄崿F(xiàn)靈活的代碼復(fù)用,也支持函數(shù)式編程。使用typescript也可以類似類型注解、重載、泛型、接口、命名空間、裝飾器等特性,為開發(fā)提供豐富的語法支持。Java則是完全的面向?qū)ο?,對開發(fā)者有一些限制。

易用性

  • Nodejs和前端同樣使用JavaScript,使用同樣的包,代碼上可以有一定的復(fù)用,比如網(wǎng)絡(luò)層:axios,用typescript定義同樣的接口...同樣受益于豐富的npm生態(tài),代碼規(guī)范,測試框架都可以復(fù)用。 Java的C層無法與前端做任何復(fù)用。
  • Nodejs沒有類型系統(tǒng)的約束,開發(fā)效率很高,可以快速響應(yīng)異變的前端需求。需要使用類型系統(tǒng)時也可以使用typescript約束,保證服務(wù)的穩(wěn)定性。Java相比下做C層的開發(fā)效率相對較低,限制也比較多。
  • Koa/express/eggjs的中間件機(jī)制可以對請求和響應(yīng)各個環(huán)節(jié)做更改,可以非常容易的實現(xiàn)數(shù)據(jù)校驗、權(quán)限檢查、統(tǒng)一報錯等功能

性能

  • 性能上nodejs采用谷歌的V8引擎,使用C++編寫部分底層庫,天生的異步IO,可以實現(xiàn)高性能的應(yīng)用。使用cluster可以部署多個進(jìn)程,充分利用CPU資源
  • 天生異步IO可以保證整個線程大部分時候不阻塞,非常容易實現(xiàn)高并發(fā),適合IO密集型的應(yīng)用開發(fā)。一般調(diào)用odl接口只有網(wǎng)絡(luò)層幾十ms的消耗。


    性能對比

    5000個并發(fā)連接下的情況下,Node的響應(yīng)數(shù)與Java差不多。

生態(tài)

  • Nodejs使用npm進(jìn)行第三方包的管理,npm上關(guān)于nodejs的包已有上百萬個,可以為我們的開發(fā)提供豐富的生態(tài)支持。
  • Nodejs在阿里、騰訊、paypal已經(jīng)有大規(guī)模的實踐,也為社區(qū)提供了很多成熟的解決方案。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容