java是跨平台的,就是生成的.class文件拿到任何系统平台都能运行,其实是建立在虚拟机上的,也就是jvm,你装jkd的时候就带了。
所有的java程序都是在虚拟机也就是jvm是运行的,而且jvm的版本也不同,有windows版本的还有linux版本的,正是因为有了不同的jvm才使得java可以跨平台。简单的说就是因为jvm的不跨平台才导致了java的跨平台,其实是一个过度。不象c语言他没有jvm,通过操作系统内核来编译,windows的操作系统编写的c,拿到linxu下就用不了。
打个比方,就象大家所知道的看电影有一种文件叫rmvb格式的,它拿到哪个平台都能运行,那是因为有realplayer,暴风等播放器的原因。不同的播放器有windows版 和linux版一个道理。
Java不是传统意义上的编译语言,Java程序运行在虚拟机上,运行的是一种称作Java字节码的东西,可以理解成虚拟机的机器码。这样只要不同的平台安装不同的虚拟机就能使一样的Java代码被编译成不一样的字节码从而可以在不同平台执行
那是因为依靠字节码在特定的java 虚拟机上运行.跨平台指:源代码无须再针对不同的操作系统进行编译,依靠具体操作系统上的java运行环境得到同样的执行效果
补充一点,java的基本数据类型,如int等的长度和平台无关,所以跨平台转移的时候不会出现内存溢出等问题
JAVA有虚拟机,JVM,可以跨平台执行