蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
1、JDK、JRE和JVM的区别
1.1、JDK
JDK(Java SE Development Kit),Java标准的开发包,提供了编译、运行Java程序所需要的各种工具和资源,包括了Java编译器、Java运行环境、以及常用的Java类库等。
1.2、JRE
JRE(Java Runtime Environment),Java运行时的环境,用于解释执行Java的字节码文件。普通用户只需要安装JRE来运行Java程序即可,而作为一名合格的程序员必须安装JDK来编译、调试程序。
1.3、JVM
JVM(Java Virtual Mechinal),Java虚拟机是JRE的一部分,它是整个Java实现跨平台的核心,负责解释执行字节码文件,是可运行Java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM,也就是说JVM是运行Java字节码的虚拟机。
不同平台的JVM是不同的,但是他们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只是为不同平台实现了相同的虚拟机,编译后的Java字节码就可以在该平台上运行了。
为什么要采用字节码:在Java中,JVM可以理解的代码就叫做字节码(即Java源代码经过虚拟机编译器编译后扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解析型语言执行效率低的问题,同时又保留了解析型语言的可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。
什么是跨平台:所谓的跨平台是指Java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理:Java程序时通过Java虚拟机在系统上运行的,只要该系统可以安装相应的Java虚拟机,该系统就可以运行Java程序。
Java程序从源代码到运行的三步:
1、Java文件(源代码)在JDK中的javac编译
2、class文件(JVM可理解的Java字节码)JVM
3、机器可执行的2进制机器码
1.4、总结
1、JDK用于开发,JRE用于运行Java程序;如果只运行Java程序,可以只安装JRE,无需安装JDK。
2、JFK包含JRE,JDK和JRE都含有JVM。
3、JVM是Java编程语言的核心并且具有平台独立性。