怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?

时间:2022-09-09 19:48:14

怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?

怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?

怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?

怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?


所以何谓跨平台,即可以理解为跨操作系统,即windows、linux、unix都能正常运行。

java跨平台,是运行级的跨平台。因为java的class在任何平台上都能正常运行(因为各平台都可以安装适用于其平台的jre即jvm即java虚拟机)。

c跨平台,是源码级的跨平台。因为各平台都有c的编译器,可以编译成该平台可运行的二进制文件(机器只能识别二进制的0101010)。



---引申

二进制文件(即机器码,即010101格式的机器能直接理解和计算)是怎么在机器上运行的?

以c语言为例test.cpp源码如下

#include <stdio.h>
main()
{
int a=1+1;
printf(a);

}
编译后,是test.exe.
test.exe是怎么执行的?
test.exe是由010101组成的吗?
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?
这里要搞清楚,机器语言(即机器码)和二进制文件的区别。
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?
怎么理解,java语言是跨平台的?即什么是跨平台?C也说自己是跨平台的,怎么理解?

因此exe文件,不是机器码,而是给操作系统运行的。exe给操作系统执行,然后操作系统将exe转换成机器码即010101,供计算机执行。