Java面试基础问题之(零)—— Java的平台独立性

首先这个平台独立性指的是硬件无关:这个硬件无关是指字节码级别的硬件无关,即同一个.class文件可以运行在不同的硬件平台上的JVM上。而这个实现原理是,java编译器在编译java程序时并不会分配内存,这个工作会交给具体平台的JVM完成,而不同平台的JVM是不一样的,这样就避免了.class只针对特定平台运行的局限。

注:java这一点同C#,.NET一样;而C/C++的跨平台性,可以这么理解:

① 如果说有,可以理解为C/C++语言本身,如语法等是硬件无关的。比如简单地数值计算等,同一份源码在不同平台上都可以行。 这时候其硬件无关性指的是源码级别的无关性,但是不同平台编译出来的文件,是不可以在其他平台上跑通的。

② 可现实是,C/C++经常和硬件打交道,源码中经常使用所在的硬件平台提供的API,例如在实现网络通信时,其使用Windows提供的API,这就导致了程序移植到Linux平台时就会出现问题,这时候,即使源码也不具有跨平台性。

所以说,总结来看:

Java是一次编译,到处运行

C++是一次编写,到处编译。

甚至有时是到处编写,到处编译

C++创始人曾经这样说:“JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的平台上运行,从这个角度而言,C和C++是才是真的跨平台的,而Java不是。”

这个角度来看,Java是将不同平台适配的工作交由自己(Sun公司)做了,让程序员关注于业务逻辑,而不用关心平台差异。JVM屏蔽了硬件平台的差异。

发布了149 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ProLayman/article/details/100119504