美文网首页
关于NodeJS Server的详细信息以及和Java Serv

关于NodeJS Server的详细信息以及和Java Serv

作者: 魂斗驴 | 来源:发表于2021-02-17 12:39 被阅读0次

真的很难选择您应该选择哪个平台作为Java或NodeJs的服务层开发平台,这几乎取决于您的要求以及您要开发的应用程序类型。因此我们可以比较它们的执行,处理方式I / O,性能以及两者的优缺点。

只需尝试了解Java和NodeJ中的线程执行即可。

Java和NodeJ中的执行和线程:

基本上,在Java和NodeJs中,Web应用程序是基于线程执行的,首先来看一下Java典型应用程序如何执行和操作线程。

Java执行:

作为的.java类文件编译,并通过本地或网络上的Java运行时环境,其获得CPU执行的,至于你要深知得到字节码.class文件和Java字节码的举动您可以在Google Java编译过程中进行搜索,让我解释更多主题。

Java如何操作线程:

在Java Web应用程序中,由于服务器已接收到该请求,因此已从线程池中选择了新线程,并且在线程上进行了处理,并且另一个请求将以隔离方式执行另一个线程,除非存在共享资源访问。

线程以非阻塞方式异步继续在进程中进行,如果该线程执行中存在阻塞且另一个线程将获得CPU分配以处理其自己的任务,则该线程正在等待。

下面是Java操作线程的示意图,

JAVA处理用户请求并操作线程

上图说明了如何在Java中执行线程,但是简单的Java程序main方法被视为父线程!你以前看过吗?

java.lang.NoSuchMethodError: main Exception in thread "main"

关于由于JVM启动而导致的输出,它将创建一个名为“ Main”的线程。您的程序将在此线程上运行,除非您自己创建其他线程。

主线程要做的第一件事是查找您的static void main(String[] argv)方法并调用它。那就是程序的切入点。
如果您希望事情“同时”发生,则可以创建多个线程,并给每个线程执行的任务。然后,他们将继续同时执行这些操作。

接下来的事情是关于NodeJ的解释,以及NodeJ如何执行和操作线程?

NodeJS:

根据官方文档定义NodeJs

java.lang.Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

简单来说,NodeJs是用于执行javascript代码的运行时环境。

如何创建NodeJs?

在Nodejs Javascript仅用于在我们的浏览器中运行的脚本语言之前,每个浏览器都称为javascript引擎,它将javascript代码转换为机器代码,下面列出了在浏览器中使用的JS Engine示例,

  • MicrosoftEdge — chakra JS引擎
  • Mozila - SpiderMonkey JsEngine
  • Chrome-V8 JS引擎

器中表现不同的原因,JS引擎为Javascript代码提供了运行时环境,直到2009年,执行JavaScript的唯一方法是在浏览器内部,2009年Ryan dhal提出了从浏览器中执行javascript的想法,因此他将V8引擎(是最好的JS引擎)带到外面,并在V8引擎C ++程序Node.exe中对其进行了改进,

在浏览器JS引擎中,

Document.getElementById(),Window 
--->这些对象使我们可以在运行代码的环境中工作(提供者:浏览器中的Js Engine)

与浏览器类似,Node是Javascript代码的运行时环境,本质上讲Node是一个包含V8 Js Engine的程序,并具有一些其他模块,这些模块提供了浏览器无法使用的功能,例如我们可以与FileSystem,Network一起使用

在Nodejs中,

FS.ReadFile()->使用文件系统
http.createServer()->侦听请求

以上示例NodeJs模块。

NodeJs执行:

我们想在后端运行JavaScript并访问低级API。我们还想从CLI和REPL运行我们的JavaScript。基本上,我们希望JavaScript能够完成所有工作!在Nodejs中,JavaScript代码在由Google开发的V8引擎中进行编译,V8可以集成在任何C ++项目中。只需获取V8源并将其作为简单库包含在内即可。现在,您可以使用V8 API,该API允许您编译和运行JavaScript代码。

V8可以将C ++暴露给JavaScript。这非常重要,因为我们希望在JavaScript中提供低级API。

V8引擎将javascript编译为一系列机器代码指令,一次将一个函数编译通常,直到第一次调用时才编译函数)。

V8解析代码并提取AST(抽象语法树),执行范围分析以了解符号所指的上下文,并将其转换为机器代码指令。

如您所提到的,V8高度关注性能:除了可以编译每个功能的完整编译器之外,V8还包含额外的编译器,该编译器负责优化确定为经常使用的块(称为Crankshaft

因此,没有,没有javascript代码的解释,而是机器代码的翻译和执行,因此您需要更多了解Google的NodeJs编译,让我解释一下NodeJs客户端处理请求,操作线程。

NodeJ如何操作线程:

在NodeJ中,当我们从客户端接收到对服务器的请求时,服务器无需为每个用户请求创建新线程,而是将请求添加到事件队列中,每个连续或并发的请求都排在队列中,以由事件循环处理:
在该NodeJs处理用户请求的流程图中,

Nodejs处理用户请求和操作线程

事件循环是一个为每个线程服务的单线程,事件循环线程是无限运行的,而循环没有退出条件,因此事件循环在整个应用程序运行时保持不变,

事件循环将线程从队列中按其放入的顺序拉出,如果任务只是非阻塞的并且仅涉及CPU利用率,则对其进行处理,如果该后续任务放回事件队列中以进行进一步处理,否则将响应返回给用户,

如果有阻塞任务,例如文件I / O或db操作,则它利用线程池中的线程之一,这些子线程执行后台任务,如果阻塞任务异步处理并且后续任务已放入事件队列,最后将响应发送回用户。
因此,以上内容仅介绍了NodeJ以及NodeJ和Java的执行。

NodeJs与Java 对比

NodeJs和Java具有自己确定的功能,产生了NodeJS,以其速度吸引了开发人员的注意。服务器上的JavaScript不仅比任何人期望的都要快,而且通常比Java和其他选项要快。此后,随着网页的不断发展,它对小,快速,无休止的数据请求的稳定饮食使NodeJ变得更加普遍。
一方面是扎实的工程和建筑的深厚基础。另一方面是简单性和普遍性。

Java在哪里赢?

1.Java坚实的基础:

我们可以听到开发商的笑声。有些甚至可能死于心力衰竭。是的,Java有故障和错误,但是相对而言,它是直布罗陀的岩石。当您启动JVM时,您将获得由坚强的策展人20年的经验,这位策展人决心控制企业服务器而不是NodeJs。

2,Java Better IDE`s:

Java开发人员拥有Eclipse,NetBeans或IntelliJ,这是三个与调试器,反编译器和服务器良好集成的顶级工具。每一个都有多年的开发,专门的用户和充满插件的坚实生态系统。对于NodeJ,用作Visual Studio代码的文本编辑器,eclipse。

在NodeJS达到像IBM的Node-RED这样IDE的开发人员中达到顶峰之后,但距离Eclipse的完善程度还有很长的路要走。

3,Java远程调试

Java拥有令人难以置信的工具来监视机器集群。深入了解JVM和精心设计的分析工具可帮助您识别瓶颈和故障。
Java企业堆栈运行着地球上一些最复杂的服务器,而使用这些服务器的公司要求最好的遥测技术。

4. Java庞大的库

Java有大量可用的库,它们提供了一些最严肃的解决方法。诸如Lucene之类的文本索引工具和诸如OpenCV之类的计算机视觉工具包是伟大的开源项目的两个示例,这些项目已准备好成为一个严肃项目的基础。

5,Java Solid Engineering:

量化起来有点困难,但是由于Java具有强大的数学基础,因此许多用于严肃科学工作的复杂程序包都是用Java编写的。Sun花了很长时间为实用程序类的细节出汗,这表明了这一点。

6,Java线程

Java的Web服务器是多线程的。创建多个线程可能会花费时间和内存,但会有所回报。如果一个线程死锁,则其他线程继续。如果一个线程需要更长的计算时间,那么其他线程通常不会饿死.Java多线程实际上很有用。

因此,我列出了Java相对于NodeJ的一些优势,让我们看看NodeJ的理想功能。

NodeJs在哪里赢?

1.NodeJ的普遍存在:

JavaScript在服务器和浏览器中找到一个主目录。您为其中一个编写的代码很可能在两者上以相同的方式运行。生活中没有任何东西可以保证,但是这与计算机行业的发展息息相关。在客户端/服务器的两面都坚持使用JavaScript比用Java再用JavaScript编写东西要容易得多。

2.NodJs的简单构建过程:

诸如Ant和Maven之类的复杂构建工具彻底改变了Java编程。但是只有一个问题。您以XML编写规范,XML是一种不旨在支持编程逻辑的数据格式。当然,用嵌套标签表示分支相对容易,但是将齿轮从Java切换到XML只是为了构建某些东西,仍然有些烦人。有了JavaScript,就没有切换装置,我们可以像NodeJs一样直接使用它。

3.具有数据库查询的NodeJs:

对一些较新的数据库(例如CouchDB,mongodb)的查询是用JavaScript编写的。混合Node.js和CouchDB不需要换挡,更不用说记住语法差异了。
如果您将Java与Sql或其他任何数据库一起使用,则需要进行一些调整,例如将Java模型与sql中的数据库表映射。

4.使用JSON的NodeJs

当数据库发出答案时,Java会尽力将结果转换成Java对象。开发人员将花费数小时来讨论POJO映射,Hibernate和其他工具。配置它们可能需要数小时甚至数天。最终,所有转换之后,Java代码都会获取Java对象。

许多Web服务和数据库都以JSON(JavaScript的自然组成部分)返回数据。JSON现在非常普遍且有用,以至于许多Java开发人员都使用该格式,因此许多优秀的JSON解析器也可用作Java库。但是JSON是JavaScript基础的一部分。您不需要库。一切准备就绪,这对开发人员来说是一个巨大的优势。

5. NodeJs速度:

人们喜欢赞扬Node.js的速度。数据输入,答案像闪电一样出现。Node.js不会在设置所有麻烦的同时设置单独的线程。没有任何开销可以减慢任何速度。您编写简单的代码,Node.js会尽快采取正确的措施。

双赢的地方:Java与NodeJ之间的交叉编译

关于在服务器上使用Java还是NodeJ的争论可以而且将会持续多年。但是,与大多数辩论相反,我们可以同时采用两种方式。Java可以交叉编译为JavaScript。Google经常使用Google Web Toolkit来做到这一点,并且它的一些最受欢迎的网站中都运行着Java代码-将Java代码转换为JavaScript。

在另一个方向上也有一条路。Rhino之类的JavaScript引擎在Java应用程序中运行JavaScript,您可以在其中链接到它。如果你真的雄心勃勃,你可以链接谷歌的V8引擎

所有代码都可以和谐地相互链接,您无需选择。

结论:

长期以来,我们一直在讨论关于NodeJs的谜团,以及它如何执行线程,如何处理用户请求,如何用Java指出,每个都有其更好的可行功能,但从开发人员的角度来看,仍然需要将我们的观点归纳为一些问题?

为什么NodeJs比Java更好?
回答:NodeJs在并发方面是一个优势!
并发是什么意思?
回答:NodeJs在处理数千个请求时获胜,NodeJs处理的并发输入和输出多于java。
Java不处理吗?
回答:确保可以处理,但不多。
最后,NodeJS是一个非阻塞I / O,意味着它可以很好地完成您需要的服务器工作,它可以接收请求,并且在完成队列时不会阻止自己接收更多请求。

哪些现代公司正在使用NodeJs:

  • LinkedIn
  • Wall-mart
  • Paypal
  • Netflix
  • Uber

Web开发的未来在于保持服务器尽可能的小巧,基本上,现代服务器提供JSON数据,而NodeJ可以做到这一点,
因此,当您考虑使用平台时,在做出决定时,绝对不应该考虑性能,这完全取决于您要构建哪种应用程序?,请考虑将要使用它的团队。浏览每个平台的优缺点,然后做出决定。

参考

Explanation and Detail about NodeJs & epic battle of Java and NodeJs

相关文章

网友评论

      本文标题:关于NodeJS Server的详细信息以及和Java Serv

      本文链接:https://www.haomeiwen.com/subject/mkmyxltx.html