我们经常听到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()方法;
④输出运行结果;