Java开发工具基本概念
JDK、JRE、JVM
- JDK
- Java Development Kit,是Java的标准开发工具包,供程序开发者必须编译、调试程序。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。
- 在jdk安装目录中,bin目录下存放了各种开发工具的可执行文件,例如javac.exe;lib文件存放的是JDK工具命令的实际执行程序
- JRE
- Java runtime environment,是运行基于Java语言编写的程序所不可缺少的运行环境,用于解释执行Java的字节码文件。用户运行JAVA程序只需安装JRE,JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
- JRE的安装目录里面有两个文件夹bin和lib。bin里的可以被认为是JVM,lib中则是JVM工作所需要的类库,而JVM和 lib和起来就称为JRE
- 从JDK11开始,JDK和JRE都是在一起的,安装后默认是没有JRE的。
- JVM
- Java Virtual Machine 是Java的虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
JDK的不同版本
JDK一般有三种版本:
- JAVA SE: standard edition,标准版,是我们通常用的一个版本
- JAVA EE: enterpsise edtion,企业版,使用这种JDK开发JAVA EE应用程序
- JAVA ME:micro edtion,主要用于移动设备、嵌入式设备上的java应用程序
JVM执行程序的过程
- 加载.class 文件
所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。只有JVM还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。 - 运行class文件
可以在命令行中输入 java 字节码文件名 ,此时启动了一个jvm,加载字节码文件名.class字节码文件到内存,然后jvm运行内存中的字节码指令
ps:在IDE上就类似于点击运行按钮。 - JVM管理并分配内存
- 执行垃圾收集调用垃圾收集器进行垃圾回收
总结
- JDK用于开发,是给开发人员用的,JRE 用于运行java程序,和JVM是给普通用户使用的。如果只是运行Java程序,可以只安装JRE,无序安装JDK。也就是说:使用JDK开发完成的java程序,交给JRE去运行。
- JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。
- IDE是集成开发环境,包括编辑器、编译器等,而cmd中的一些命令,如javac等,是编译器,jdk中带有javac编译器的可执行文件。