我们经常听到Java是可以跨平台的,但是你有了解过他为什么可以跨平台吗?

首先了解Java的几大平台

1、Java SE:Java标准平台,它允许开发和部署在桌面、服务器,是一个桌面程序,比如QQ;

2、Java EE:Java企业平台,在Java SE的基础上引入了各种框架,常为Web服务;

3、Java ME:Java微型平台,它用来开发移动设备和嵌入式设备(手机、打印机等);

那它应用这么广,是如何跨平台的呢?

举个例子,我们开发了一款游戏,那我们怎么让他在Windows系统和Linux系统上运行起来呢?

有两种方案:

1、我们是针对Windows开发一款,针对Linux开发一款呢?

2、还是我们只开发一款游戏,开发一款Windows的模拟器,开发一款Linux的模拟器?

很明显第2中方案更好,成本更低;

Java的跨平台:

Java的跨平台也是通过虚拟机来实现的,而这个虚拟机就是我们常说的JVM,JVM是不跨平台的,我们只要把不同系统的JVM安装到不同系统,然后把代码部署上去,代码就会在JVM中运行,从而实现了同一份代码不同平台运行;

什么是JVM?

Java虚拟机,简称JVM,它是运行所有Java程序的虚拟计算机,好比游戏的模拟器,JVM用于读取并处理编译过的平台无关的字节码(class文件),从而实现Java的可移植性;

我们平常安装的Java包含两部分,一部分是JRE,另一部分是JDK

JRE:Java运行环境,里面包含JVM和Java核心类库,是Java运行时使用的;

JDK:Java开发工具,顾名思义是供开发者使用的,包含开发Java程序的所有工具,如javac(编译器,用于java文件编译成class文件)和java源码,还有很多Java调试和分析工具,也包含Demo和类库,JDK里也包含JRE;如果你安装了JDK,那你不仅可以开发Java程序,同时也可以运行Java程序;

那为什么JDK中有个JRE呢,因为JDK中有些Java程序是需要运行的,JDK中的JRE专为这些JAVA程序服务;

Java程序是如何从编译到运行的呢?

①程序员编写好程序aa.java;

②利用JDK中的javac变成成aa.class;

③启动JVM,执行JAVA程序中的main()方法;

④输出运行结果;

Java 跨系统迁移 java跨平台_JVM