JVM 整体结构
Java不只是一种编程语言,还是一个完整的操作平台。Java之所以可以跨平台,这离不开JVM虚拟机。
JVM是一个软件,在不同的平台上,JVM有不同的版本。Java在编译之后会生成一种.class文件,这种文件成为字节码文件。JVM虚拟机就是将Java编译后的.class文件翻译成特定平台下的机器码,然后运行。也就是说,在不同平台上装上平台对应的JVM虚拟机后,就可以将Java字节码文件转换,然后运行我们的Java程序。
值得注意的是,Java编译后的结果是生成字节码,而不是机器码。字节码是不可以直接运行的,必须通过JVM再次翻译成机器码才可以运行。即使是将Java程序打包成可执行文件,也仍然需要JVM的支持才可以运行。
跨平台的是Java程序,而不是JVM。JVM是用C/C++开发的,不能平台,不同的平台下JVM的版本是不同的。
字节码文件,有什么用?
- JVM虚拟机的特点:一处编译,多处运行。
- 多处运行,靠的是.class 字节码文件。
- JVM本身,并不是跨平台的。Java之所以跨平台,是因为JVM本身不夸平台。
- 二进制的文件,显然不是给人看的。是给机器看的。
- 从根源了解了之后,返回到语言层次 好多都会豁然开朗。
Java语言规范补充:
JVM虚拟机规范(相对底层的)Java,Groovy,kotlin,Scala。 编译后都是Class文件,所以就都能在JVM虚拟机上运行。
java代码执行流程
关于编译器JIT介绍: https://blog.youkuaiyun.com/lm324114/article/details/107303526