【问题标题】:Are there any ports or alternative implementations of the node.js platform with JavaScript engines other than V8?除了 V8 之外,是否有任何带有 JavaScript 引擎的 node.js 平台的端口或替代实现?
【发布时间】:2012-12-20 17:37:03
【问题描述】:

node.js 是一个基于 Google V8 JavaScript 引擎的开源服务器端 JavaScript 平台。几年来,它已迅速普及并变得越来越重要。

现在 node.js 只是一个平台。本质上,使用哪个 JavaScript 引擎只是一个实现细节,任何 JS 引擎都可以使用,甚至是与各种 JS 引擎一起工作的抽象。

Joyent 可能选择了 V8,因为它是开源的,有优惠的许可条款,而且通常是最快的 JS 引擎(但我相信它有时会被其他引擎超越)。

鉴于对许多可能被称为“开放标准”的事物(例如 JS 引擎、Web 浏览器、编程语言的编译器等)拥有多种不同但兼容的实现是一件好事;当然,拥有像 node.js 这样的服务器端平台的多个实现也很好

例如,几乎所有操作系统和硬件都可以运行 JavaScript 引擎,但 V8 仅适用于其中的几个。甚至事实证明,微软正在为 Windows Azure 推广 node.js,尽管它依赖于主要竞争对手的工作,即使他们拥有自己的 JS 引擎,可以与 V8 竞争速度。

如果有任何此类端口已经开始,我将非常有兴趣关注他们的进展,以监控 node.js 是否可能成为开放标准。


• 我意识到 node 不像 JS 和浏览器那样标准化,而且它的发展非常迅速,但这从未阻止任何人挠痒痒。 • 如果有多个端口,我不是在征求您认为更好或更受欢迎的意见,这不是民意调查问题。 • 我也不是购买 node.js 实现,我感兴趣的是 node.js 或类似的东西是否会被普遍采用作为一个平台,或者它是否会留在一家公司手中。支持>

【问题讨论】:

  • 我想这是可能的,但目前还不可行,因为 V8 会碾压所有其他引擎。也许这在未来会改变,谁知道......
  • 我所知道的最接近的是Luvit,它是基于 Lua 的 Node.js 基础架构实现。
  • 相关:Node.js for lua?
  • @hippietrail - 那么为什么接受的答案不是简单的“是或否”?另外,使用这种逻辑,什么会使一个答案有效而一个无效?每个没有给出“否”答案的团队是否应该将其标记为正确?您本质上是在要求进行民意调查 - 人们投票“是”或“否” - 这就是为什么它是模棱两可和无效的问题。
  • @Fraser 和任何其他相关方,我已寻求有关 Meta 的指导:Ought objective yes/no questions about the existence of a project etc be construed as “poll questions”?

标签: javascript node.js platform serverside-javascript javascript-engine


【解决方案1】:

Mozilla 的 SpiderMonkey + 节点核心库:https://github.com/mozilla/spidernode

【讨论】:

  • 这实际上是我更期望找到的那种东西。 Java 更让我惊讶。谢谢。不幸的是,它似乎已经过时了。
  • 这里有一些关于the project's beginnings 的信息。这里有一些关于its stagnation的信息
【解决方案2】:

node-chakracore,它使用了微软在其 Edge 浏览器中使用的开源 JavaScript 引擎: https://github.com/Microsoft/ChakraCore/

他们正在积极致力于改进常见的 Node.js 基准测试(如 AcmeAir),同时改进其针对服务器端工作负载的 JIT/GC 和 eliminating v8-specific "CrankShaftScript" from Node.js core

如上一个回答中提到的,还有spidernode,它基于Mozilla Firefox 浏览器中的SpiderMonkey JavaScript 运行时。

您可以通过查看最新的node.js CI builds 来了解他们如何在性能方面进行改进。

【讨论】:

  • 这肯定是当今最重要的一个,因此它已成为公认的答案。
【解决方案3】:

我刚刚了解到另一种实现方式。

这个其实是原node.js的一个fork,叫做io.js。分叉似乎发生在 2014 年底,主要目标是增加对 ES6 (JavaScript ECMA-262) 的支持。

【讨论】:

  • 从节点 4.x 开始,nodejs 的 iojs 分支已合并回主线 nodejs。
【解决方案4】:

是的!显然,仅在 JVM 上就有不止一种 node.js 实现:

SprintStack:Rhino 的并发 + 事件 I/O

SprintStack 为开发人员提供了一个节点兼容的环境,具有 JVM 的所有优点,例如对并发的惯用支持、可靠的垃圾收集和大量现有库。

如果您希望您的 node.js 应用程序能够利用快速、成熟的 VM 和最先进的容错和分布式编程,那么试试 SprintStack!

(在7zark7's anwser 链接的线程中找到了这个。)

【讨论】:

  • 上面的 SprintStack 链接指向一个域名抢注站点,但我无法编辑这个特定的答案来修复它。
【解决方案5】:

是的,node.jar 在 JVM 上的 Nashorn 引擎上运行:

https://groups.google.com/forum/?fromgroups#!topic/nodejs/750fF6ruAdY

如果能成功就太好了。

【讨论】:

  • 感谢您没有发现很难说出这里要问的内容。感谢您没有发现它模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈。并感谢您能够以目前的形式合理地回答它。 (-:
  • @hippietrail 如今绝对是罕见的景象
猜你喜欢
  • 2015-05-16
  • 2021-12-24
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多