本文主要是介绍学习笔记 --- JVM JIT与JVM,编译器与解释器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JVM---包括解释器
JVM:是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。
编译器
Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。
解释器
JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。
Java 跨平台的原因 解释型语言
- .class文件不是机器可以识别的语言,而是字节码,最终还是需要 jvm(解释器)的解释
- 不同的操作系统有不同的JVM, Java实现了真正意义上的跨平台
C、C++ 他们经过一次编译之后直接可以编译成操作系统了解的类型,可以直接执行的 所以他们是编译型的语言。
Java不一样他首先由编译器编译成.class类型的文件,这个是java自己类型的文件,然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言,
现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。
JIT与JVM
Java JIT(just in time)即时编译器 : 它其实是将字节码编译为硬件可执行的机器码
JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
参考:https://www.cnblogs.com/lyhero11/p/5080306.html
附:
定义:
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!
区别:
编译型语言,执行速度快、效率高;依靠编译器、跨平台性差些。
解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。
参考:
https://blog.csdn.net/qzc70919700/article/details/72515022
https://blog.csdn.net/u014647208/article/details/78329187 有图有真相
这篇关于学习笔记 --- JVM JIT与JVM,编译器与解释器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!