Netscape Enterprise Server和服务器端JavaScript(SSJS)与Node.js

服务器端JavaScript(SSJS)的Netscape Enterprise Server实现与node.js实现之间的主要区别是什么?

为什么Netscape的实现没有获得牵引,而node.js似乎更受欢迎?

早在1999/2000年,我曾经在一家使用Netscape Server和SSJS的公司工作。 我不知道当时有多受欢迎,但是从第一手的经验来看,我可以告诉你几乎所有的事情都是可怕的:

  • debugging是一个巨大的痛苦 (源文件的任何改变,甚至是静态文件,都需要完全重新加载应用程序,这不是一个快速的操作)
  • 一个简单的错误(例如未捕获的exception)通常会导致灾难性的服务器故障 。 有趣的是,这是NodeJS的默认行为,尽pipe解决Node的这个问题要容易得多。
  • 虽然语法是JavaScript,但却没能实现现代JavaScript的一个关键优势: 运行时解释 。 服务器端JS与Netscape服务器在部署之前需要进行编译,因此需要一个非常缓慢的开发过程。
  • 它遵循multithreading执行模型 (而不是现代的JS VM,它们几乎总是基于事件循环的)
  • 可能最大的弱点是缺乏asynchronous编程支持 。 所有的IO操作都是阻塞的,因此它需要一个重量级的multithreading模型来支持多个客户端。 与现代事件驱动的JavaScript虚拟机(即:V8)相比,执行模型更像J2EE容器。 在我看来,这是NodeJS正确的第一件事:asynchronous理念深深embedded到NodeJS开发工作stream程中,它是轻量级,事件驱动,极高效的并发模型的关键。

只是为了笑声,这里是从1.2版本的SSJS参考指南的链接。 从第21页开始,您可以看到文件对象,数据库查询等的所有标准函数和同步API。

此后不久,我的公司就转而使用ColdFusion,从此不再回头。

主要区别在于Javascript在过去15年以上的发展。 Node.js使用V8的Javascript引擎,这将是现代计算机更加优化。

维基百科有不同的服务器端JS解决scheme之间的区别。

以下是Netscape Enterprise Server 的function列表 – 提供了一个很好的概念,让现代SSJS解决scheme更好。

为什么没有得到关注? 实际上,客户端JS最近才开始成为Web开发的标准,所以当它甚至没有被真正广泛地用于服务器端的开发时,任何人都不会考虑将其用于服务器端开发。 我说广泛采用 ,以前一直难以迎合所有浏览器的JavaScript解决scheme。