Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说JDK、JRE、JVM区别与联系,希望能够帮助你!!!。
JDK(Java Development Kit)是java开发工具包的缩写,用于制作程序和Java应用程序的软件开发环境。Java 开发人员可以在 Windows、macOS、Solaris 和 Linux 上使用,是一个跨平台编程语言。JDK 帮助他们编写和运行 Java 程序。可以在同一台计算机上安装多个JDK版本。它包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK安装目录
在JDK的安装目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、 jre。
(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
JRE(Java Runtime Environment)是java运行环境的缩写,一个旨在运行其他软件的软件(有点绕口)。它包含核心类库、JVM和其他一些必要工具(jre里有运行.class的java.exe)。简单来说,如果你想运行Java程序,你需要JRE。如果您不是程序员,则无需安装 JDK,只需安装JRE即可运行Java程序。不过,所有JDK 版本都与Java Runtime Environment 捆绑在一起,因此无需在 PC 单独下载和安装 JRE。
JVM(Java Virtual Machine)是java虚拟机的缩写,是一个引擎,它提供运行时环境驱动Java代码或应用程序。通过使用JRE提供的类、库和文件来运行程序。JVM能够运行用Java和其他语言编写的程序,也可以编译成Java字节码。例如Jython、Jruby、Closure、Apache、Groovy、Kotlin等。它将 Java 字节码转换为机器语言JVM是Java运行环境 (JRE) 的一部分。它不能单独下载和安装。要安装JVM,您需要安装 JRE。JVM的就是Java虚拟机。在许多其他编程语言中,编译器为特定系统生成机器代码。但是,Java 编译器则称为JVM虚拟机生成代码。
JVM
JVM的术语:
类加载器(Class Loader Subsystem)
类加载器读取.class文件并将字节码保存在方法区域中。
方法区(Method Area)
方法区域保存.class文件的类级信息。JVM只有一个方法区域,在所有类之间共享。
堆(Heap)
堆是分配对象的JVM内存部分。JVM为每个.class文件创建一个对象。
栈(Stack)
栈是JVM内存部分,但与堆不同,它用于存储临时变量,即方法参数。
PC寄存器(Program Counter Registers)
PC寄存器用于跟踪已执行的指令和将要执行的指令。因为指令是由线程执行的,所以每个线程都有一个单独的PC寄存器。
JIT编译器(JIT Compiler)
JIT也称为即时编译器。调用方法时使用。JIT将被调用方法的字节码编译成本机代码。当一个方法在本机代码中编译时,JVM直接调用该方法的编译代码,而不是解释它。
本机方法堆栈(Native Internal Threads)
用于访问虚拟机的运行时数据区域的本机方法。
本机方法接口(Native Method Interface)
它使java代码能够在C或C++中用本地应用程序调用或调用。本机应用程序是特定于系统硬件和操作系统的低级语言程序。
垃圾收集(Garbage Collector)
通过JVM使用垃圾收集进行自动内存管理。它从堆中销毁未引用的对象,以便为新对象分配更多内存。
JDK、JRE、JVM关系
以下是 JDK的重要特性:
以下是 JRE 的重要特性:
以下是 JVM 的重要特性:
因此,现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章