据我了解,V8是将Javascript解析为C ++分配并通过Javascript代码操作C ++对象的功能。在我了解了V8和libuv之后,我在Node.js上获得的所有乐趣都消失了。由于Nodejs并不是真正的魔术师,因此在我看来就像V8之类的事情不可避免地展开了。 V8是真正的交易。它是一款如此漂亮,实用的软件。
因此,回到问题所在,以另一种语言(如C#/ Java)拥有类似V8的东西并因此实现类似于Nodejs的环境是否可能和/或更具优势?
是的,从技术上讲是可能的,但是可能会有性能问题。性能问题的原因是C#/ Java代码在其自己的虚拟机(C#的CLR,Java的JVM)中运行。要在C#/ Java中运行javascript,我们需要“虚拟机中的虚拟机”之类的东西。当然,将javascript转换为C#/ Java指令然后转换为CLR / JVM字节码将是巨大的开销。
[有一个用C#编写的javascript解析器/解释器-叫做Jint。您可以在这里阅读:https://github.com/sebastienros/jint