java怎么实现平台无关性的

请问一下,java怎么实现平台无关性的?我知道是靠jvm,但是能说说具体细节么?
其他语言比如c,c++,他们不能实现么?为什么?

你通过java的编译和解释过程不就能了解了么 编译成class 术语说是 byte-code 其实就是一种被jvm所能够接受的编码标准 通过jvm java能调用一些底层的库 比如windows 以及 liunx ,unix等而java 程序在编写的时候则不用考虑这些细节 包括内存实现 以及指针等问题 而c,c++ 是要考虑的 包括如何调用底层的库以及和平台有关的服务等 可以说是java把c,c++中的一部分分离出来编写成一个jvm 只有这样才能去掉指针以及实现内存回收机制等。

java是一门高级语言,他通过其他的低级语言来实现一个虚拟机,虽然平台不同,但是也可以使用不同的技术来实现一个功能相近的虚拟机,然后java程序在虚拟机上运行,就“与平台无关”了。

c和c++也可以跨平台,但是需要在不同平台下编译。

java所宣扬的跨平台性实际上是所谓的“一次编译,到处执行”,即只需在一个地方编译,在其他各个平台下都可以执行。

之所以会这样,是因为他们编译出来的东西是不同的,而且编译出来的东西运行在的地方也不同。

java编译出来的是一种“java字节码”,由虚拟机去解释执行。
而c和c++则编译成了二进制,直接交由操作系统执行。

正是因为有了虚拟机,java才有了这样的一个特性。

水平有限,只能解释到这地步了,呵呵。不准确的地方望多多见谅。

JAVA只运行在自己的JVM上,不需要依赖任何其他的底层类,所以和操作系统没有任何联系,平台是说运行的系统,你明白了吗