java虚拟机的二三事之java的跨平台性

大家都知道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程序与操作系统之间的缓冲角色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值