1、java跨平台是同一java源码被编译后得到的字节码文件可以在不同的操作系统上运行
例如:一个java程序,编译得到class后可以在windows,linux,mac等等的操作系统上运行
Java先编译后解释。
同一个.class文件在不同的虚拟机会得到不同的机器指令
(Windows和Linux的机器指令不同)但是最终执行的结果却是相同的
注意:Windows和Linux的机器指令不同。大概因为操作系统需要硬件支持,所以属于自己的指令(区别于cpu的指令)。
2、以前它有一个口号:一次编译、到处运行。
就是说代码编译好之后得到一个字节码而不是传统的机器码的程序,当我们运行在不同的操作系统上的时候,每个操作系统都有相应的 Java 虚拟机来解释这些字节码,因为跟操作系统平台相关的部分由 Java 虚拟机来负责,这就是所谓的跨平台。对比一下传统的程序,一个 Windows 上的 exe 没办法运行在 Linux 上,反过来也是一样。
另外,Java 使用的包名和类路径也是为跨平台提供支持的,包名的层次结构就是与目标树和jar内的目录结构对应的,因此程序只看到一个逻辑的层次结构,真实运行时我们则是在命令行给出 -classpath 参数,这时的 classpath 参数则是与操作系统平台相关的,但要知道这与代码本身没有关系,代码依然是跨平台的。