Java的平台无关性
一次编译,到处运行
这是Java的一大特点,只需要一次编译,就可以在多种机器、系统上运行,即跨平台运行,这是很多语言(如c、cpp)所不能达到的。
为什么有些语言不能跨平台?
首先我们需要了解语言的执行的流程:
语言 ----> 机器语言
所有的语言最终都会变成机器语言,因为cpu只能看懂机器语言,执行机器指令。
对于c,cpp等编译性语言,通过编译,将源代码一次性编译成机器指令。

由于不同的平台(CPU)所对于的机器指令可能不相同,因此每次 编译 后的机器指令只能应用于对应的机器。
因此不能跨平台。
为什么Java可以跨平台?
想要跨平台,那么我们需要到达这样的效果

但不同的机器平台所支持的机器码不同,而一次编译肯定只有一种结果,那么Java换了一个思维
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iifvhGNG-1595492480215)(/Users/chentao/Documents/md_img/image-20200722134404746.png)]](https://i-blog.csdnimg.cn/blog_migrate/6ff93f73af896954a3f9aa68fec923e7.png)
将Java源码编译成统一的字节码文件,由Java虚拟机(Java Virtual Machine,JVM)实时解释执行,而不同平台有着不同版本的JVM,当执行Java程序时,由JVM解释字节码文件,转换成对应的机器语言。(随着JVM的发展,目前是解释+编译执行)。
由于Java程序运行时,是解释执行的,所以速度一般比编译性语言慢一些,不过随着JVM的发展,Java程序的运行已经逐步变成解释+编译,速度有了提高。
JVM运行的是字节码文件,因此运行的不一定非要是Java语言,只要满足JVM的字节码规范即可,JVM现在已支持多种语言,除了Java之外,还有如Kotlin、Groovy、Jython等等
因此Java是跨平台的,当然Java虚拟机(JVM)不能跨平台,不同的平台有不同版本的Java虚拟机。
本文深入探讨了Java的跨平台特性,解释了为何Java能够实现“一次编译,到处运行”的理念,同时对比了C/C++等语言的局限性。文章详细说明了Java源码如何被编译为字节码,并由Java虚拟机(JVM)在不同平台上解释执行的过程。
16万+

被折叠的 条评论
为什么被折叠?



