Java跨平台,C/C++等不是跨平台?

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

Java跨平台,C/C++等不是跨平台?
从刚接触 Java这个东西,老师就说Java语言有多好,最大的优势是可以跨平台执行,其他的都不可以,所以我们要学Java,然后就跟着学了。。。
(1)首先纠正下错误:也有语言可以跨平台,比如汇编,机器码这类的低级语言。只是这类的低级语言仅仅只是语法通过,不能做到同一代码同样执行效果。
(2)要解释java为何能跨平台就要从java的执行过程来讲。java是通过JVM执行的,而JVM才是java跨平台的关键,JVM集成了在此平台执行的指令集。所以看起来java只需要写一遍代码,经过一次编译之后,就可以各平台通用。
其实没注意到的是,java针对不同的平台,需要不同的安装文件(你可以从官网上看到同一版本的java针对各个系统有不同的安装文件)。相对于其他语言各系统但不能跨平台,java只是把这些放到了安装文件中而已。


C语言跨平台?
有的说C语言也可以说是跨平台的:C语言本身是跨平台的,但程序不是,如果你的程序只使用C标准的输入输出,那么源代码也是跨平台的,只要用对应平台的编译器编译就可以运行,如果你使用了平台专有的API,那么就不能跨平台,比如WINDOWS窗口程序,就调用了WINDOWS的创建窗口,显示窗口等API(这些调用并不一定在你自己的代码中),linux是没有这些API的,所以就无法编译运行。


JAVA为什么能跨平台?
因为字节码是在虚拟机上运行的,而不是编译器。换而言之,是因为JVM能跨平台安装,所以相应JAVA字节码便可以跟着在任何平台上运行。只要JVM自身的代码能在相应平台上运行,即JVM可行,则JAVA的程序员就可以不用考虑所写的程序要在哪里运行,反正都是在虚拟机上运行,然后变成相应平台的机器语言,而这个转变并不是程序员应该关心的。