是否有可能使Node.js使用Rhino作为Javascript引擎?

时间:2010-12-04 10:35:55

标签: node.js rhino llvm v8 powerpc

我在我的网络应用程序上使用Node.js进行多项工作,到目前为止还可以。

但Node.js使用Google的V8作为默认的Javascript引擎(JSE),V8在x86和ARM指令集架构(ISA)上运行。

现在我有一台PPC处理器Mac计算机,我想运行Node.js。

为此,我建议使用Rhino + OpenJDK Shark虚拟机+低级虚拟机(LLVM)作为JIT编译器。目前,这看起来像是在PPC ISA上运行Node.js最适用的方式。或者,有更好的方法吗?

你能事先告诉我是否可以让Node.js与Rhino一起工作?顺便说一句,Node.js是用C ++编写的,我确实有C ++编程经验,即如果必须,我可能会尝试重新编辑Node.js的代码。

感谢。

4 个答案:

答案 0 :(得分:19)

不,node.js几乎与每个源文件中的V8绑定,并且包括已写入的所有附加组件。即使您具有C ++经验,转换也是一项艰巨的任务。

更不用说,如果你单独走这条路,你也会独自维持它。 (而node.js本身已经聚集了大量的社区贡献。)

如果您真的想付出这样的努力,请考虑先在the mailing list进行讨论。或者,为V8的PPC端口收集动量。 (同样,如果不是更艰巨的任务。)

对于开箱即用的Rhino服务器端JavaScript引擎,请查看Narwhal project。 (虽然看起来不太活跃。)

答案 1 :(得分:6)

MuleSoft在Rhino上有一个名为Rhinodo的Node.js实现。

但是你不再需要使用Rhino作为Node.js的后端 - 最近有一个端口Node.jsV8用于PowerPC by Andrew Low(IBM)。

答案 2 :(得分:4)

这是不可能的,因为Shtééf已经说过Node.js与V8紧密相连,它在整个地方使用特定的V8方法,依赖性只会在不久的将来增长,在获取途中会有“黑客”进入V8的内部,以便在将字符串写入套接字时大幅提高性能。

许多模块(断言,检查等)取决于特定的V8功能。在V8和其他服务器端JS引擎之间无法以任何方式移植代码。

虽然Shtééf考虑选项,但我只看到一个解决方案:
摆脱PPC硬件。

如果你真的想让它在Rhino上运行,你将最终陷入维持的噩梦,最终你将有两个写两个不同的应用程序,或者为Rhino创建一个巨大的运行时层,试图模拟Node.js,祝你好运,因为很多东西在Rhino中都不可用。

此外,不会支持第三方库。

说真的,拿另一台电脑,自己编写所有包装器等只会耗费你的时间,你可以写出很棒的Node.js东西。而且因为时间就是金钱......

答案 3 :(得分:0)

将源自Google的V8 JavaScript引擎移植到PowerPC架构的项目。

https://github.com/ic/v8-powerpc