java代码和js代码交互 javascript为什么不像java一样直接事先编译成字节码然后跑在v8上?

javascript为什么不像java一样直接事先编译成字节码然后跑在v8上?JS to V8其实没有虚拟机字节码这一层,直接编译成CPU指令,这也是V8 fast的核心。Java还有一层虚拟机指令。

javascript为什么不像java一样直接事先编译成字节码然后跑在v8上?

JS to V8其实没有虚拟机字节码这一层,直接编译成CPU指令,这也是V8 fast的核心。Java还有一层虚拟机指令。

然而,JS仍然有许多动态语言特性。由于动态语言不能预先固化变量类型,因此会产生大量的处理成本。

编译完成后,首次运行的代码将包含缓存到CPU中的指令。一旦Java被缓存,虚拟指令也将被绕过。所以在这个阶段,CPU指令没有区别。php8也是如此,它很快就会到来。

但是每种语言的优化程度和动态部分的解析复杂度不同,导致实际速度的差异。从这个角度看,Java沉淀时间较长,强大的语言功能没有历史负担,所以Java运行后会出现更快的速度。