服务器端JavaScript相对于Java的优势

Advantages of server side javascript over java

本文关键字:Java JavaScript 相对于 服务器端      更新时间:2023-09-26

我是服务器端javascript编程的新手,我试图理解它与传统服务器端java之间的区别。有哪些显着差异,为什么SSJS变得流行?SSJS如何比Java更好?从外行的角度来看,我认为JS在性能方面比Java慢,主要是因为它是一种解释型语言。

问候Anand

我认为node.js与这种现象的兴起有很大关系:

http://nodejs.org/

可以肯定的是,它一直是许多commonjs库开发的动力,等等。

我看到评论说,当客户端和服务器端代码使用同一种语言时,它使生活更轻松。 对于我参与的节点项目,最初只有 3 名程序员负责所有工作,我们或多或少可以全权使用我们想要的任何技术。 这引起了一些争论,因为每个人都有不同的背景;但是当有人建议NodeJS时,一个看起来是个好主意的原因是JavaScript是我们所有人的共同点。

但是,我不认为node的成功主要是因为它使用了js;而是关于设计。 我比我使用过的大多数其他服务器端技术(Rails,PHP,cgi,mod_perl,mason(更喜欢它,而且无论界面中使用哪种语言,我都可能同样喜欢它。 但它是。

这就是我的观点:我认为这与JavaScript的任何事情无关,而与"javascript社区"中进行的一些聪明的思考和发展有关,令人惊讶的惊喜。 考虑PHP:我不认为PHP的成功与语言的设计(或性能特征(有太大关系,我认为这与它的使用方式的性质以及10-15年前人们如何看待服务器端编程有关,以及(密切相关的(他们必须构建的工具。

那里的一个问题(在"聪明的思维"部门(是节点背后的人做出的(非常有说服力的,如果你尝试的话(断言,例如nginx,大意是异步,事件驱动的模型比传统的并行同步线程驱动模型更适合服务器编程。 我相信后者在Java中占主导地位,即使我认为它也可以很容易地以另一种方式使用。 另一方面,Javascript最初打算用于浏览器的异步,事件驱动的世界,并且根本没有线程。 再说一遍:与其说是语言,不如说是文化。

另外值得注意的是,JSON作为交换格式的主要使用,以及像couchdb(我使用过(和mongodb(我没有(这样的NoSQL数据库,它们在构建数据库时基本使用了JSON。 Couchdb 还使用 js 进行一些服务器端编程(基本上是查询处理程序(,大概是因为数据库文档是 JSON 格式的,这也很好交给客户端。 非常圆滑和聪明。 一种语言,一种协议,从模型到视图;从重要的意义上说,根本没有"交换"。

这与传统服务器端Java的区别

首先,Java和JavaScript没有任何共同点。它们是两个完全不同的东西。请记住这一点。

  • 我认为很多人喜欢服务器端JavaScript,因为他们可以使用一种语言。他们在服务器上和客户端上使用JavaScript,而不是使用另一种语言(如Java,PHP或Ruby(。此外,许多Web程序员都熟悉JavaScript(因为他们在客户端上使用它(,因此他们非常了解它。

  • JavaScript也可以像Java一样更容易。如果你只有一个小项目,与JavaScript相比,Java可能会有很多开销。像回调这样的一些东西在 JavaScript 中可能非常优雅。

  • 此外,像 Node.js 这样的新框架使得使用这种语言很有吸引力。只要没有任何服务器端框架,你就不能在服务器上使用 JavaScript。但是这种语言今天发展得很好。

  • 我认为JavaScript的性能也取决于服务器。我不确定这一点,但据我所知,JavaScript也可以(及时(编译。谷歌的chrome正在做类似的事情。此外,性能在大多数网站上并不是什么大问题,因为性能主要是对数据库的IO。HTML页面的实际创建非常简单,没什么大不了的。并且:PHP也在许多网站上被解释和使用。Ruby比Java慢得多,但Ruby on Rails非常受欢迎。所以性能似乎并不那么重要。更多的是关于语言的"漂亮"和优雅。

从我的角度来看,如果您拥有丰富的 JS 客户端接口,则主要优势是简化客户端-服务器交互。如果您在服务器端和客户端使用相同的语言,则可以在它们之间共享公共代码(例如,如果您有一些业务逻辑(如验证(,并且在客户端和服务器上使用它,则可以在JS中实现一次并在多个地方使用(。

如果你已经知道JS,你不应该学习一门新语言来做服务器端工作。

这就像为什么使用GWT(来自谷歌的java Web客户端(当你有像JS这样奇妙的东西时。

我认为这更像是心理学问题——人们倾向于停留在自己的保存和已知区域,而不是转向未知语言。如果你在过去的5年里使用过java,并且你知道它所有的陷阱,并且你非常喜欢它,你会开始说服自己每件事都应该用java编写,这是最快的解决方案。

我并不是说Java比js更好(尽管我认为它更适合大型服务器端项目(,但我认为大多数js服务器端用户使用它是因为他们已经对js感到满意,所以他们不想改变它。

我想

在这里补充我的观点。
一句话:Node.js在实时Web应用程序中大放异彩,它采用Websockets上的推送技术。
经过 20 多年基于无状态请求-响应范式的无状态 Web,我们终于拥有了具有实时双向连接的 Web 应用程序,客户端和服务器都可以发起通信,允许它们自由交换数据。
这与典型的 Web 响应范式形成鲜明对比,在典型的 Web 响应范式中,客户端始终发起通信。此外,它都基于在标准端口80上运行的开放Web堆栈(HTML,CSS和JS(。