探索Java开发人员的Node.js世界

发表时间: 2020-03-31 18:55

我们都知道,Node.js现在吸引了所有关注。每个人都对学习Node.js感兴趣,并希望对其进行研究。在开始研究技术之前,最好先了解其背后的概念。但是对于初学者来说,它可能会与不同人使用的不同定义混淆。Node.js到底是什么?是新语言,新框架,新工具,还是简单的JavaScript文件?即使是经验丰富的Java开发人员,也可以很快了解Node.js。因此,在本文中,我将尝试为Java开发人员解释Node.js。


运行环境

我们知道Java需要一个称为JRE的运行时环境来运行Java程序。JRE具有一个称为Java虚拟机(JVM)的虚拟机。JVM具有许多组件,例如垃圾收集器(GC),即时(JIT)编译器,解释器,类加载器,线程管理器,异常处理程序,它们可以在不同的时间执行不同的任务。

除JVM外,JRE还具有一组库(例如rt.jar)以在运行时帮助Java程序。我们为Windows,Macintosh,Linux等不同平台提供了单独的JRE ,因此也为JVM提供了JRE 。

好吧,只要尝试记住Java程序是如何编译和执行的即可。我们有源代码(.java),由Java编译器将其编译为称为Bytecode(.class)的中间代码。该字节码被提供给JVM,以便在给定的目标平台上执行。JVM在执行之前将字节码转换为特定于目标平台的机器代码。

Web应用架构

典型的Java Web应用程序体系结构具有四层:客户端,表示,服务/业务和数据。

客户端层可以使用jQuery之类的库来支持AJAX功能并进行一些客户端验证和DOM操作。

表示层是通常与客户端层交互的层。该层通常将实现MVC模式以进行请求和响应处理。这里使用诸如Spring MVC之类的框架。同样,将有一个像Velocity这样的模板引擎,可以基于预定义的布局动态渲染视图。

服务或业务层负责拥有业务逻辑并与其他层进行通信。在AJAX请求的情况下,该层将数据直接提供给客户端层。该层执行业务逻辑并响应Presentation层以更新模型。服务层是与数据层进行通信以获取或更新所需数据的层。服务层可以使用任何框架(例如Spring)来具有SOAP或REST服务实现。

数据层通常使用某些ORM框架(例如Hiberate)或任何基于JDBC的库/模板(Spring JDBC模板)与任何RDBMS(例如Oracle)进行通信。

部署架构

Java Web应用程序部署体系结构包括Apache HTTP服务器,该服务器充当代理服务器并提供静态内容。动态内容由Web容器提供,Web容器实际上是处理Java文件的引擎。

我如何理解Node.js?

运行环境

我们在上一节中讨论JRE的原因是将其与Node.js直接进行比较。是的,您知道了!Node.js不是一种语言;不是框架;不是工具 它是用于运行基于JavaScript的应用程序的运行时环境。

与JRE相似,Node.js具有一个称为JavaScript虚拟机(JsVM?)的虚拟机。它为基于JavaScript的应用程序生成机器代码,以在不同平台上启用它。

Node.js还具有一组库,这些库又称为Node API或Node Modules,以帮助在运行时运行JavaScript应用程序,类似于JRE中的Java库。对于Windows,Macintosh和Linux等不同平台,因此对于JsVM,我们对Node.js有单独的要求。

JavaScript虚拟机不过是Google的开源JavaScript引擎V8。与Java虚拟机一样,JsVM(V8引擎)也具有主要组件,例如JIT和GC,分别用于执行任务,运行时编译和内存管理。

现在,让我们尝试了解JavaScript程序是如何编译和执行的。源代码是用JavaScript(.js)编写的。将其提供给Vs8引擎JsVM之前,不会生成任何中间代码。JsVM直接获取此源代码,并将其编译为特定于给定目标平台的机器代码以执行。

Web应用架构

基于Node.js的Web应用程序主要遵循Java Web应用程序体系结构。主要区别在于客户请求处理。客户端请求将由单个线程处理,但对于Node.js应用程序,将异步处理。使用Java,每个客户端请求将由一个单独的线程同步处理,因此是多线程的。

有许多可用于基于Node.js的Web应用程序开发的框架/库。这里要注意的有趣一点是,所有框架/库都是基于JavaScript的。

您可以从下图快速了解不同层以及在Node.js应用程序的这些层中使用的框架/库。

客户端层使用Angular.js(客户端MVC框架)。可以使用基于JavaScript的Web应用程序框架Express.js开发Presentation层以及Service层。它还带有一个用于运行Node.js应用程序的独立服务器。数据层使用对象数据建模模块(例如Mongoose.js)与NoSQL数据库(如MongoDB)进行通信。

这个特定的堆栈称为MEAN ,由M ongoDB,E xpress.js,A ngular.js(客户端MVC框架)和N ode.js(运行时环境)组成。

部署架构

基于Node.js的Web应用程序部署体系结构遵循Java的Web应用程序部署体系结构。它具有NGINX服务器,其作用类似于HTTP代理服务器,并提供静态内容。动态内容由Node.js服务器提供,该服务器包含用于处理JavaScript文件的引擎。

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。