java用编译器编译成字节码,字节码用解释器运行,同一字节码可以在不同的操作系统下被不同的解释器运行,从而实现Java的跨平台性也就可移植性.因为字节码,即class文件是按规定标准排列的二进制文件,所以不同操作系统的java编译器都会编译出一致的字节码文件
创新互联是一家专注于网站设计制作、做网站与策划设计,定结网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:定结等地区。定结做网站价格咨询:13518219792
因为java代码是运行在JVM上的,不同的平台有不同的JVM,如Windows和Mac上的运行同一款游戏,他们的实现方式肯定不一样,但你都能读取游戏的存档文件。你不需要知道JVM在不同平台的实现方式,但他们解析java的class文件是一样的逻辑,就是这样java实现跨平台的。
因为java有一个JVM(Java Virtual Machine)java虚拟机,源程序*.java被编译成字节码文件,字节码是与平台无关的,是面向jvm编写的,而jvm又有自己的一套指令系统,在不同的平台上jvm的指令也是不一样的,也就是说不同操作平台有自己的jvm但是jvm向上的字节码接口是与平台无关的,jvm接口向下是与硬件有关的,jvm是个中间件,这样只要有字节码和jvm,不管在任何平台都可以运行java程序。全靠的是jvm虚拟机
希望对你能有所帮助。
java先编译成字节码(中间码),为什么需要这个中间码呢?
如果java直接编译成系统能识的二进制码,可能一个标识在windows下是1100,而linux下是1001,这样java在windows下编译后无法在linux运行。
所以java先编译成字节码(中间码),由JVM(java虚拟机来解释执行),而这个JVM对于主流的操作系统都有相应的版本,目的就是将 统一的中间码 编译成对应操作系统识的二进制码,然后执行。
所以不论你在什么系统中编译的java,得到的都是统一的字节码(中间码)
在windows中需要有windows版本的JVM来执行,要是到了linux下,只要下载linux版本的JVM来执行就可以了
这就是java的跨平台,可移植性