溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Node.js對Java開發(fā)者而言是什么東西

發(fā)布時間:2021-12-30 10:42:17 來源:億速云 閱讀:118 作者:小新 欄目:編程語言

這篇文章主要介紹Node.js對Java開發(fā)者而言是什么東西,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

我們都知道Node.js現(xiàn)在得到了所有的關(guān)注。每個人都對學(xué)習(xí)Node.js感興趣,并希望可以工作于Node.js。在開始工作之前了解技術(shù)背后的概念總是不會錯的。但對初學(xué)者來說,可能會因為不同的人使用的不同定義而暈頭轉(zhuǎn)向。Node.js究竟是什么?它是新的語言還是新的框架,是新的工具抑或只是一個簡單的JavaScript文件?即使對于有經(jīng)驗的Java開發(fā)人員來說,也很難快速了解Node.js。因此,在本文中,我將嘗試為Java開發(fā)人員詮釋Node.js。

運(yùn)行時環(huán)境

我們知道Java需要一個稱為JRE的運(yùn)行時環(huán)境來運(yùn)行Java程序。JRE有一個稱為Java Virtual  Machine(JVM)的虛擬機(jī)。JVM有許多組件,如垃圾回收器(GC),即時(JIT)編譯器,解釋器,類裝載器,線程管理器,異常處理器,用于在不同時間執(zhí)行不同的任務(wù)。

除了JVM之外,JRE還有一系列的庫(例如,rt.jar)來幫助運(yùn)行時的Java程序。我們有單獨(dú)的JRE用于不同的平臺,如Windows,Macintosh和Linux,以及還有JVM。

好吧,就試著記住如何編譯和執(zhí)行一個Java程序。我們有源代碼(.java),它由Java編譯器編譯成一個名為Bytecode(.class)的中間代碼。此Bytecode被提供給JVM以便在給定的目標(biāo)平臺上執(zhí)行。JVM在執(zhí)行之前將Bytecode轉(zhuǎn)換為特定于目標(biāo)平臺的機(jī)器碼。

Java程序的執(zhí)行可以通過下面的圖片解釋:

Node.js對Java開發(fā)者而言是什么東西

Web應(yīng)用程序架構(gòu)

典型的Java  Web應(yīng)用程序架構(gòu)有四個層:客戶層(Client),展示層(Presentation),服務(wù)/業(yè)務(wù)層(Service/Business)和數(shù)據(jù)層(Data)。

Node.js對Java開發(fā)者而言是什么東西

客戶層(Client layer)可以使用像jQuery這樣的庫來支持AJAX功能并且具有一些客戶端驗證和DOM操作。

展示層(Presentation layer)通常是與客戶層交互的一個層。該層通常已經(jīng)實(shí)現(xiàn)了用于請求和響應(yīng)處理的MVC模式。在這一層可以使用如Spring  MVC這樣的框架。此外,還有一個模板引擎,如Velocity,可以根據(jù)預(yù)定義的布局動態(tài)地渲染視圖。

服務(wù)或業(yè)務(wù)層(Service/Business  layer)負(fù)責(zé)具備業(yè)務(wù)邏輯并與其他層通信。在AJAX請求的情況下,該層直接向客戶層提供數(shù)據(jù)。此層執(zhí)行業(yè)務(wù)邏輯并回應(yīng)到展示層以更新模型。服務(wù)層是與數(shù)據(jù)層通信以獲取或更新所需數(shù)據(jù)的一個層。服務(wù)層可以具有使用任何框架,例如Spring的SOAP或REST服務(wù)實(shí)現(xiàn)。

數(shù)據(jù)層(Data layer)通常使用一些ORM框架,如Hiberate,或任何基于JDBC的庫/模板(Spring  JDBC模板)來與任意RDBMS(如Oracle)進(jìn)行通信。

架構(gòu)部署

Java Web應(yīng)用程序架構(gòu)部署包括Apache  HTTP服務(wù)器,它充當(dāng)代理服務(wù)器以及提供靜態(tài)內(nèi)容。動態(tài)內(nèi)容由Web容器提供,Web容器實(shí)際上是處理Java文件的引擎。

下圖說明了Java Web應(yīng)用程序的架構(gòu)部署:

Node.js對Java開發(fā)者而言是什么東西

我如何理解Node.js?

運(yùn)行時環(huán)境

我們上面討論JRE的原因是為了直接與Node.js進(jìn)行比較。對,你看明白了吧!  Node.js不是一種語言;不是框架;也不是工具。它是用于運(yùn)行基于JavaScript應(yīng)用程序的運(yùn)行時環(huán)境。

與JRE類似,Node.js有一個稱為JavaScript Virtual  Machine(JsVM?)的虛擬機(jī)。它為基于JavaScript的應(yīng)用程序生成機(jī)器代碼,以便在不同的平臺上啟用它。

Node.js還有一系列庫,它們可能被稱為Node API或Node  Modules,用于幫助在運(yùn)行時運(yùn)行JavaScript應(yīng)用程序,類似于JRE中的Java庫。我們對不同的平臺,如Windows,Macintosh和Linux,以及JsVM有不同的Node.js要求。

JavaScript Virtual Machine就是V8,來自Google的開源JavaScript引擎。與Java Virtual  Machine一樣,JsVM(V8引擎)也有主要組件,如JIT和GC,分別用于執(zhí)行任務(wù),運(yùn)行時編譯,和內(nèi)存管理。

現(xiàn)在,讓我們試試?yán)斫釰avaScript程序是如何編譯和執(zhí)行的。源代碼是用JavaScript(.js)編寫的。在將其提供給JsVM(V8引擎)之前,沒有生成中間代碼。JsVM直接獲取此源代碼并將其編譯為特定于給定目標(biāo)平臺的機(jī)器代碼以便執(zhí)行。

下面的圖片可以簡明地說明上述解釋:

Node.js對Java開發(fā)者而言是什么東西

Web應(yīng)用程序架構(gòu)

基于Node.js的Web應(yīng)用程序主要遵循Java  Web應(yīng)用程序架構(gòu)。主要區(qū)別在于客戶端請求處理??蛻舳苏埱髮⒂蓡蝹€線程處理,但在Node.js應(yīng)用程序的情況下將異步處理。使用Java,每個客戶端請求將由單獨(dú)的線程同步處理,因此它是多線程的。

有許多框架/庫可用于基于Node.js的Web應(yīng)用程序開發(fā)。這里有趣的地方在于,所有的框架/庫都是基于JavaScript的。

你可以從下面的圖片中快速理解不同的層和在那些Node.js應(yīng)用程序?qū)又惺褂玫目蚣?庫。

Node.js對Java開發(fā)者而言是什么東西

客戶層使用Angular.js,客戶端MVC框架。展示層,以及服務(wù)層,可以通過使用Express.js,一個基于JavaScript的Web應(yīng)用程序框架來開發(fā)。這也自帶一個用于運(yùn)行Node.js應(yīng)用程序的獨(dú)立服務(wù)器。數(shù)據(jù)層使用對象數(shù)據(jù)建模模塊(例如Mongoose.js)來與NoSQL數(shù)據(jù)庫(如MongoDB)通信。

這個特殊的棧稱為MEAN,它由MongoDB,Express.js,Angular.js,客戶端MVC框架和Node.js(運(yùn)行時環(huán)境)組成。

架構(gòu)部署

基于Node.js的Web應(yīng)用程序的架構(gòu)部署遵循Java的Web應(yīng)用程序部署架構(gòu)。它有一個NGINX服務(wù)器,它的作用就如同HTTP代理服務(wù)器,并提供靜態(tài)內(nèi)容。動態(tài)內(nèi)容由Node.js服務(wù)器提供,該服務(wù)器包含處理JavaScript文件的引擎。

下面的圖解釋了基于Node.js的Web應(yīng)用程序的架構(gòu)部署:

Node.js對Java開發(fā)者而言是什么東西

以上是“Node.js對Java開發(fā)者而言是什么東西”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI