概述
JDK、JRE、JVM之间的关系和区别一直比较模糊,所以今天写这篇文章来理清三者之间的关系。请让我考虑一下~
一、JDK(Java Development ToolKit)Java开发工具
除了jre之外,JDK还包含用于将Java源文件编译成class文件的类。它还包括源自Java 的API。
JDK常用包:
java.lang:这是String、Math、Integer、system、thread等系统的基类,提供了常用的函数。
java.io包含与输入/输出相关的类,例如:文件操作。
java.net:包含与网络相关的类,如URL、URLVinnection等。
java.util:这是一个系统辅助类,特别是集合类、集合、列表、映射等。
java.sql:是数据操作类、连接、语句、结果集等。
JDK 共有三个版本。
J2SE,标准版,标准版,J2EE,企业版,J2ME,微型版,主要用于移动设备上的Java应用程序。
也就是说,JDK是所有JAVA的核心,包括Java运行环境(Java Runtime Environment)、Java工具集(如javac/java/jdb)、Java基类库(即包含Java API)。 rt.jar)。
二、JRE(Java Runtime Enviroment)Java运行环境
JRE 包括JVM
JRE是保证Java程序能够运行所需的基础环境。这意味着开发Java程序时不能使用JDK。因此,JDK包含了JVM。此外,所有Java 程序都必须在JRE 中运行。
JDK包含JVM和JAVA核心类库和支持文件。与JDK相比,开发工具——不包括编译器、调试器或其他工具。
三、JVM(Java Virtual Mechine)Java虚拟机
JRE 是Java 运行时环境。 Java 运行在底层JVM 或Java 虚拟机上。由于JVM 的跨平台能力,Java 虚拟机用于加载类文件。 Java是为平台编写的,因此它是跨平台的,而JVM是平台相关的。
JVM是JRE的一部分,是通过在真实计算机上模拟各种计算机功能来实现的。 JVM有自己完整的硬件架构,包括处理器、堆栈、寄存器以及相应的指令系统。 JVM的主要工作是解释自己的指令集(即字节码)并将其映射到本地CPU指令集或OS系统调用。事实上,Java语言运行是跨平台的,各个操作系统使用不同的JVM映射规则,使得Java语言独立于操作系统,提供跨平台的功能。 JVM 不考虑更高级别的Java 源文件,只考虑从源文件生成的类文件。一个class文件由JVM指令集、符号表和一些辅助信息组成。
JDK,JRE,JVM三者间的关系
其实,JDK安装目录下有一个名为jre的目录,该目录下包含两个文件夹:bin和lib。这里,你可以把bin看作是jvm,lib是jvm工作所需的类库。
也就是说,当你使用JDK开发了JAVA程序(调用JAVA API)后,文本Java文件通过JDK的编译器(javac)编译成JAVA字节码,这些JAVA字节就会运行在。 JVM 解析这些字节码并将它们映射到CPU 指令集或操作系统系统调用。
稍后我会分享一些DevOps和DBA的内容。感兴趣的朋友请留意。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。