JVM了解

我们都知道java一直宣传的口号是:一次编译,到处运行。那么它如何实现的呢?我们看下图:

image

首先编译:Java程序经过编译之后就会变成.class文件。我们使用的eclipse就是一个编译工具。面向JVM,生成JVM能理解的代码或字节码文件

运行:为什么编译之后的Java程序可以在win,linux,Mac等平台中都可以运行呢?然而为什么c\c++不行呢?是因为win,linux,mac平台都装了对应的jvm。jvm可以解释编译后的字节码成对应的机器码,之后就可以在这一个平台运行了。

 更进一步说,jvm运行的是class字节码文件,只要是这种格式的文件就行,所以,实际上jvm并不像我之前想象地那样与java语言紧紧地捆绑在一起。如果非常熟悉字节码的格式要求,可以使用二进制编辑器自己写一个符合要求的字节码文件,然后交给jvm去运行;或者把其他语言编写的源码编译成字节码文件,交给jvm去运行,只要是合法的字节码文件,jvm都会正确地跑起来。所以,它还实现了跨语言……

最后,Java为什么能夸平台?是因为有了jvm