大家都知道java是跨平台的语言,那什么是跨平台呢?就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行。
在计算机的世界里,计算机只认0和1,而我们编写的java代码是如何在计算机上运行起来的呢,它需要经过编译的过程,将我们编写的java文件变成计算机能够识别的机器语言,就能够执行了。而这个编译的过程又分成两部分,一是前端编译,先将java文件编译成class文件,比如javac命令就可以将java文件编译成class文件,二是通过jvm将class文件编译成计算机可以识别的机器语言,这样就能够在计算机上执行了。
所以java能够跨平台的关键就在于jvm,不同操作系统下的jvm可以将同样的class文件编译成对应的机器语言。我们可以画一个图来理解一下。
假设有两个操作系统a与b,它们都安装了对应的jvm,此时有同一个a.java文件要在这两个系统上执行,它们首先经过javac命令后编译成a.class文件,然后再通过对应操作系统里的jvm编译成相应的机器语言,例如图中所示,a系统下的jvm将a.class编译成了10000000,而b系统下的jvm将其编译成了00001000。由此可知,java之所以能够跨平台,是因为jvm扮演了java程序与操作系统之间的缓冲角色。
java虚拟机的二三事之java的跨平台性
最新推荐文章于 2023-06-11 14:36:20 发布