java入门到精通——详解java环境JDK JRE JVM的作用及关系
在众多的编程语言,比如像java、c#、c++、vb、Python等,其中java编程语言越来越多的被认可,主要原因是java作为一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++具有中让大多数人无法理解的继承、指针等概念。同时对于java编程语言来说,还具有可移植性、跨平台、简单性、稳定性、健壮性、安全性等众多特点,java编程语言更是作为面向对象的编程语言的代表,极其完美地实现了面向对象的理论概念,允许程序员进行复杂的编程。而对于java初学者来说,对于java学习中提及的JDK、JRE、JVM的作用和关系的理解上显得力不从心。今天,我们就来详细探究一番。
对于java编程来说,并不像我们想象中那么复杂。这里,我们先对java编程语言的编译和执行进行一个整体的了解。我们可以用两个阶段来概括,一是java代码的编译阶段,二是java程序的运行阶段。在java代码的编译阶段,主要的任务是将编写好的xxx.java的源代码文件在dos命令窗口中使用java的编译器工具javac将.java后缀的java源文件编译为一个或者多个.class后缀的字节码文件(这里的字节码文件并非是二进制文件)。
紧接着就是java程序的运行阶段,在java运行阶段,需要使java.exe的运行工具将编译后的.class后缀的字节码文件加载到java虚拟机JVM中,此时java虚拟机JVM会启动加载器classloader,classloader会在硬盘中搜索.class 的字节码文件,并能够将该字节码文件装载到JAVA虚拟机JVM中并解释为二进制文件,然后JAVA虚拟机JVM会执行该二进制文件和底层硬件平台进行交互。这就是整个java编程的编译和执行过程。
了解了java编程的编译和执行过程后,我们再来说一说JDK、JRE、JVM的作用和关系。
JDK :英文名称(Java Development Kit),JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品Java 开发工具包,是整个 Java 开发的核心,集成了JRE 和一些其它的工具。例如:javac.exe,java.exe,jar.exe 等。
JRE :英文名称(Java Runtime Environment),根据翻译,直接直接理解为Java 运行时环境,是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用,它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。
JVM :英文名称(Java Virtual Machine),也就是我们常说的 Java 虚拟机。它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给操作系统执行。
从概念上理解了JDK、JRE、JVM各自的作用后,我们不难看出之间的关系也就很清楚了,对于JVM是java程序与操作系统交换的必要环境,而JRE运行环境是java程序能够被java虚拟机JVM调用和执行的运行环境。对于JDK来说,更多的作用是编写java程序,是开发环境,只不过JDK包含了JER,它的范围更大。
总结就是:JRE是运行环境,JDK是个开发环境。编写Java程序的时需要JDK,而运行Java程序的时候需要JRE;JDK里面已经包含JRE,若安装了JDK,就可以既编辑Java程序,又可以运行Java程序,无需单独的JRE。对于JDK而言,包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可。