Node.js對於Java開發者而言是什麼?

2021-02-23 腳本之家

來自:碼農網

連結:www.codeceo.com/article/what-nodejs-for-java-developer.html(點擊尾部閱讀原文前往)

英文原文:https://dzone.com/articles/what-is-nodejs-for-java-developers

翻譯作者:碼農網 – 小峰

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

運行時環境

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

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

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

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

Web應用程式架構

典型的Java Web應用程式架構有四個層:客戶層(Client),展示層(Presentation),服務/業務層(Service/Business)和數據層(Data)。

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

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

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

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

架構部署

Java Web應用程式架構部署包括Apache HTTP伺服器,它充當代理伺服器以及提供靜態內容。動態內容由Web容器提供,Web容器實際上是處理Java文件的引擎。

下圖說明了Java Web應用程式的架構部署:

我如何理解Node.js?運行時環境

我們上面討論JRE的原因是為了直接與Node.js進行比較。對,你看明白了吧! Node.js不是一種語言;不是框架;也不是工具。它是用於運行基於JavaScript應用程式的運行時環境。

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

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

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

現在,讓我們試試理解JavaScript程序是如何編譯和執行的。原始碼是用JavaScript(.js)編寫的。在將其提供給JsVM(V8引擎)之前,沒有生成中間代碼。JsVM直接獲取此原始碼並將其編譯為特定於給定目標平臺的機器代碼以便執行。

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

Web應用程式架構

基於Node.js的Web應用程式主要遵循Java Web應用程式架構。主要區別在於客戶端請求處理。客戶端請求將由單個線程處理,但在Node.js應用程式的情況下將異步處理。使用Java,每個客戶端請求將由單獨的線程同步處理,因此它是多線程的。

有許多框架/庫可用於基於Node.js的Web應用程式開發。這裡有趣的地方在於,所有的框架/庫都是基於JavaScript的。

你可以從下面的圖片中快速理解不同的層和在那些Node.js應用程式層中使用的框架/庫。

客戶層使用Angular.js,客戶端MVC框架。展示層,以及服務層,可以通過使用Express.js,一個基於JavaScript的Web應用程式框架來開發。這也自帶一個用於運行Node.js應用程式的獨立伺服器。數據層使用對象數據建模模塊(例如Mongoose.js)來與NoSQL資料庫(如MongoDB)通信。

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

架構部署

基於Node.js的Web應用程式的架構部署遵循Java的Web應用程式部署架構。它有一個NGINX伺服器,它的作用就如同HTTP代理伺服器,並提供靜態內容。動態內容由Node.js伺服器提供,該伺服器包含處理JavaScript文件的引擎。

下面的圖解釋了基於Node.js的Web應用程式的架構部署:

就這樣?

請注意,這篇文章的目的只是為了幫助從Java開發人員的角度理解Node.js,而不是為了顯擺對Java或Node.js的支持。此外,除了我們在討論中涉及到的之外,還有許多不同的架構解決方案、框架和工具。為了便於比較和理解,我採用了最簡單和可行的架構解決方案以及最簡單的框架和庫系列。因此,請務必更進一步地去深入了解。祝大家學習愉快!

相關焦點

  • Node.js對Java開發者而言是什麼?
    每個人都對學習Node.js感興趣,並希望可以工作於Node.js。在開始工作之前了解技術背後的概念總是不會錯的。但對初學者來說,可能會因為不同的人使用的不同定義而暈頭轉向。Node.js究竟是什麼?它是新的語言還是新的框架,是新的工具抑或只是一個簡單的JavaScript文件?即使對於有經驗的Java開發人員來說,也很難快速了解Node.js。
  • 我開始討厭node.js了
    寫在前面對於node,短短的幾年,我經歷了由愛到恨,這不是一個技術問題,而是一個心結。過了沒多久,我發現了node,原來js還可以寫後臺,這領我萌生了一個幼稚的想法,用js就可以橫掃天下了。現在很多前端新人還保持著這樣的想法。
  • 乾貨:NodeJS對於Java開發者而言是什麼?
    我們都知道Node.js現在得到了所有的關注。每個人都對學習Node.js感興趣,並希望可以工作於Node.js。在開始工作之前了解技術背後的概念總是不會錯的。但對初學者來說,可能會因為不同的人使用的不同定義而暈頭轉向。Node.js究竟是什麼?它是新的語言還是新的框架,是新的工具抑或只是一個簡單的JavaScript文件?
  • centos7編程實踐:安裝nodejs
    一、nodeJS簡介1、Nodejs是什麼?Node.js是一個javascript運行環境。2、node.js的優勢2.1、Nodejs語法完全是js語法,只要你懂js基礎就可以學會Nodejs後端開發Node打破了過去JavaScript只能在瀏覽器中運行的局面。
  • 什麼是Java開發人員的Node.js?
    我們都知道,Node.js現在吸引了所有關注。每個人都對學習Node.js感興趣,並希望對其進行研究。在開始研究技術之前,最好先了解其背後的概念。但是對於初學者來說,它可能會與不同人使用的不同定義混淆。Node.js到底是什麼?是新語言,新框架,新工具,還是簡單的JavaScript文件?即使是經驗豐富的Java開發人員,也可以很快了解Node.js。
  • 2020 年 Node.js 開發者調查報告
    本報告將從 Nodejs 開發者人群、應用場景、開發場景等多個維度分析當下 Nodejs 開發生態的現狀。受訪者人物來源本次調查問卷中,填寫問卷的 Node.js 開發者主要年齡分布如下:開發場景 整體而言有 87.50% 使用 Node.js 開發服務端 API,有 51.19% 的人開發 CLI & 工具。
  • 10 個最適合 Web 和 APP 開發的 NodeJS 框架
    在瀏覽器以外運行 JavaScript 對於 JavaScript 愛好者來說非常神奇,同時也肯定是 web 應用程式開發界最受歡迎的進步之一。全球各地的開發者張開雙臂擁抱 NodeJS。
  • 全程指導:Node JS實戰之製作塗鴉遊戲
    【IT168技術】Node.js目前無論是在前端還是後端開發中,已經越來越受到廣大開發者的關注,相關使用Node.js進行開發的案例也越來越多。  Node是一個Javascript運行環境(runtime)。實際上它是對GoogleV8引擎(應用於Google Chrome瀏覽器)進行了封裝。
  • Node.JS快速入門
    我們在命令提示符下輸入命令node demo1.js ,結果如下:2.2 使用函數我們剛才的例子非常簡單,咱們這裡再看一下函數的使用:我們在命令提示符下輸入命令node demo2.js ,結果如下:>2.3 模塊化編程創建demo3_1.js創建demo3_2.js2.4 創建web伺服器創建demo4.jshttp為node內置的
  • 10+ 最佳的 Node.js 教程結合實例
    以下是Node.js入門的簡單介紹,如果你對Node.js略有了解可以直接跳過此部分。那什麼是Node.js呢?Node.js是迄今運用最多的服務端JavaScript運行時環境,使用JavaScript開發跨平臺的實時WEB應用。Node.js基於Google的V8 JavaScript引擎。
  • 專門針對初學者的Node.js教程
    Node.js的教程並不缺乏,但有大部分教程針對已有Node.js基礎的開發者。「我已下載了Node.js,可我如何開始呢?」以下教程是專門針對Node.js初學者,文中將通過實例分享,一步步教你如何開始Node.js之旅。  什麼是Node.js?
  • Node.js 學習資料和教程(值得收藏)
    >被誤解的 Node.jsNode.js C++ addon編寫實戰系列熱門node.js模塊排行榜,方便找出你想要的模塊nodejs多線程,真正的非阻塞淺析nodejs>一個周末掌握IT前沿技術之node.js篇用node+express搭建多人博客教程系列Node.js靜態文件伺服器實戰人人和微博登錄模塊的實現《京JS》會議 & V8上的
  • 推薦幾款非常不錯的Node.js測試工具
    Node.js是建立在Google V8 JavaScript引擎之上的網絡伺服器框架,允許開發者能夠使用客戶端語言JavaScript在伺服器端編碼。此前我們曾發過一篇文章《百萬級並發 Node.js也能行》,NodeJS在實時性方面的功能有目共睹,相信沒有什麼可以擋住其前進的腳步。
  • 基於Node.js 的爬蟲丨前端開發者
    前端開發者丨Node.js基於nodejs 的爬蟲 API接口項目,包括前端開發日報、知乎日報、前端top框架排行、妹紙福利、搞笑視頻、各類視頻新聞資訊 熱點詳情接口數據 https://ecitlm.github.io/Node-SpliderApi/#/原文地址:https://gitee.com/ecitlm/splider
  • 前端頁面開發之Node JS初學者指南
    什麼是Node.js  Node是一個Javascript運行環境(runtime)。實際上它是對GoogleV8引擎(應用於Google Chrome瀏覽器)進行了封裝。V8引 擎執行Javascript的速度非常快,性能非常好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好。
  • 【 Node.js】你應該知道的 NPM 知識都在這!
    為什麼寫這篇文章很多 Node.js 開發者,都知道有 package.json 這個文件,也多少都了解一些 npm 知識,但是可能沒有系統的學習過,這部分的知識對於開發一個  cli 工具,發布自己的 npm 包都很常用,開發中也會經常用到npm script內容,系統的學習一下確實會有所幫助,上面三個場景如果你都用不到,配置上節約時間,
  • 深入淺出Rhino:Java與JS互操作
    那麼Rhino究竟是什麼呢?為什麼說Nashorn是新一代JavaScript引擎?Rhino有什麼特性?Rhino與Java及JavaScript有什麼關係呢?本文將會為您一一解答。  什麼是Rhino?  Rhino 是 JavaScript 的一種基於Java的實現,原先由Mozilla開發,現在被集成進入JDK 6.0。
  • node.js、MongoDB下一代的LAMP
    node.js、MongoDB下一代的LAMP 我們大部分人在做網站時,都用的是LAMP,殊不知LAMP已成過去式,新一代的小生:nix、node.js、MongoDB誕生了,讓我們走進他們,知道他們的故事!
  • 後端Web開發:Node.js和Java
    在本文中,我們將重點關注Node.js作為後端開發環境的日益普及,以及Java開發人員在後端所做的事情。介紹對於今年的DZone資料庫指南,我們對來自整個IT行業的軟體專業人員進行了調查。我們收到了1,202條回復,完成率為64%。
  • 前端開發者們注意了,Node.js官方認證考試中文版上線了
    對於想要展示自己技能的開發人員來說,這種基於表現的、可驗證的認證考試有助於樹立信心,並為潛在僱主提供了一種直接的方式來驗證求職者是否擁有成功所必需的技能。>OpenJS Node.js應用程式開發者認證非常適合具有至少兩年使用Node.js經驗的Node.js開發人員參加。