java 编译器

来源:百度知道 编辑:UC知道 时间:2024/05/04 07:48:32
java根据不同的操作系统有不同的jdk那么也就是说有不同的编译器和JVM,那么在windows上编译后的字节码可以移植到linux下运行吗?为什么?如果可以这样,那么是不是证明windows下的javac和linux下的javac是相同的,只不过windows和linux下的jvm不同而已?(如果windows下的javac和linux下的javac不同,那么两者编译出的字节码肯定不同,那么肯定不可能实现跨平台和可移植,我这种推理是否正确?)

针对不同的OS,的确有不同的JVM。但是这些JVM对于同一个java文件所编译生成的字节码是相同的。所以,这些编译好的字节码(也就是class文件)可以跨平台。
另外,JVM也就是java虚拟机是有一套规范的,所有厂商制作的针对不同OS的JVM都必须符合这个标准,所以可以互相兼容。