2016 - 2024

感恩一路有你

java开发对cpu要求高吗 javascript为什么不像java一样直接事先编译成字节码然后跑在v8上?

浏览量:1393 时间:2021-04-11 05:59:18 作者:admin

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

js到v8 其实已经没有虚拟机字节码这层了,直接编译成cpu指令了,这也是v8快的核心。java反而多出一层虚拟机指令。

但js本质还是有很多动态语言特性,动态语言因为无法提前固化变量类型,就会多出不少处理成本。

一旦编译完成,第一次运行的代码会有缓存成cpu的指令,一旦缓存java的也会绕过虚拟指令,所以到这个阶段,单纯就cpu指令而言,没有啥区别。包括马上推出的php8也是如此。

但复杂在每个语言优化程度,和对动态部分解析有差异,而造成实际的速度还是有区别。从这点来说,java沉淀的时间更久,强语言特性也没有历史负担,所以java在运行后会显得更快一些。

Java 为什么要编译为字节码?

java是解释性语言,但是它又和js,python这类纯解释语言不一样,它需要先编译再直行。但是和c语言不一样,java编译成字节码文件,而非本地码,由于有了编译这个过程,使得java可以

1 通过编译直接给出语法级的错误,保证最终执行的都是正确(语法级别)的代码
2 通过编译可以对代码进行一部分的优化(比如字符串拼接改为StringBuilder)
3 对代码进行规整(字节码文件内部是一套非常规范的结构化存储,建议可以看下字节码文件的内部结构),提升解释执行时的访问性能
4 可以压缩大小,字节码文件内部非常紧凑,没有注释空行等运行时不需要的东西
5 跨平台,通过编译成字节码这种中间格式而非机器码,使得java可以轻而易举地跨平台(一次编译,随处执行)
6 便于加密,通过使用一些编译插件可以对其进行混淆和加密,而不会像js那样,直接可以看源码(字节码可以被反编译,通过混淆以后,可以提升反编译难度)
7 字节码有版本信息,便于jvm运行时的校验(比如你用了jdk7的新特性,那么jvm6在加载的时候就可以先做校验,避免运行中才提示错误)

java开发对cpu要求高吗 java开发吃cpu吗 java开发要什么cpu

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。