什么是Java字节码?采⽤字节码的好处是什么?
Java字节码: 扩展名为.class的⽂件
就是Java字节码
采⽤字节码的好处: Java字节码通过jvm虚拟机解释,同一个Java字节码不同的jvm执行路线
,生成不同平台的⼆进制机器码
,同一份代码可以跨平台使用
Java中的编译器和解释器:Java中引⼊了虚拟机的概念,即在机器和编译程序之间
加⼊了⼀层
抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序⼀个的共同的接⼝。编译程序只需要⾯向虚拟机,⽣成虚拟机能够理解的代码,然后由
解释器
来将虚拟机代码转换为特定系统的⼆进制机器码执⾏。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展名为 .class的⽂件),它不⾯向任何特定的处理 器,只⾯向虚拟机(只有java的虚拟机可以用,也是一种缺点)。
每⼀种平台(Win丶Linux)的解释器是不同的,但是实现的java虚拟机是相同的。
Java源代码经过编译器编译后变成字节码
,虚拟机将每⼀条要执⾏的字节码送给解释器,解释器将其翻译成特定机器上的机器码
,然后在特定的机器上运⾏。
Java源代码---->编译器---->jvm可执⾏的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执⾏的⼆进制机器码---->程序运⾏
- 采⽤字节码的好处:字节码并不专对⼀种特定的机器,因此,Java程序⽆须重新编译便可在多种不同的计算机上运⾏。
Java比C/C++执行慢的原因?
-
C/C++代码
直接解释
变成机器可执⾏的⼆进制机器码 -
Java代码还要经过jvm编译(也相当于解释),再解释变成机器可执⾏的⼆进制机器码
- 摆明了,多加了一节,要慢
-
Java代码还有各种安全机制,检查数组越界,检查类型是否错误,检查是否空指针,检查对象是否需要回收 (JVM) 等等,
为了安全稳定所以它慢
- C++等就程序员自己判断,不去判断自然就还要快喽
-
当然,为了安全稳定,C++也要走安全检查的,但是相比于Java呢?
-
Java是
后台一直在搞安全检查,检查个没停
,所以执行又慢了点大帅比,点赞了没?