概述
因为对JDK。JRE。JVM这三者的联系与区别。一直都是模模糊糊的。所以今天特写此文。来整理下三者的关系。捋一捋思路~
一。JDK(Java Development ToolKit)Java开发工具
JDK包含了jre。它除了包含jre之外还包含了一些javac的工具类。把java源文件编译成class文件。java文件是用来运行这个程序的。除此之外。里边还包含了java源生的API等。
JDK常用的包:
java.lang:这个是系统的基础类。比如:String。Math。Integer。system。thread提供常用的功能。
Java.io这里面是所用输入输出有关的类。比如:文件操作。
java.net:这里面是与网络有关的类。比如URL。URLVonnection等。
Java.util:这个是系统辅助类。特别是集合类conllection。list。map等。
Java.sql:这个是数据操作的类。connection。statememt。resultset等。
JDK有以下三种版本:
J2SE。standard edition。标准版;J2EE。enterpsise edtion。企业版;J2ME。micro edtion。主要用于移动设备上的java应用程序
总之。JDK是整个JAVA的核心。包括了Java运行环境(Java Runtime Envirnment)。一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
二。JRE(Java Runtime Enviroment)Java运行环境
JRE包含JVM
JRE。是为了保证java程序能够运行时。所必备的一基础环境。也就是它只是保证java程序运行的。不能用来开发。而jdk才是用来开发的。而想要开发Java。必须包含能够运行的环境。因此。JDK是包含JVM的。并且所有的Java程序都要在JRE下才能运行。
JDK包括JVM和JAVA核心类库和支持文件。与JDK相比。它不包含开发工具——编译器。调试器和其它工具。
三。JVM(Java Virtual Mechine)Java虚拟机
JRE是Java运行时环境。Java运行靠的就是底层的依赖于JVM。即java虚拟机。Java虚拟机用来加载类文件。Java中之所以有跨平台的作用。JVM是按照不同的平台所写的。因此。Java具有跨平台性。但是JVM确实依赖于平台的。
JVM是JRE的一部分。它是一个虚构出来的计算机。是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构。如处理器。堆栈。寄存器等。还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的。其实就是不同的操作系统。使用不同的JVM映射规则。让其与操作系统无关。完成了跨平台性。JVM 对上层的 Java 源文件是不关心的。它关注的只是由源文件生成的类文件( class file)。类文件的组成包括 JVM 指令集。符号表以及一些补助信息。
JDK。JRE。JVM三者间的关系
其实在JDK的安装目录下有一个名为jre的目录。里面有两个文件夹bin和lib。在这里可以认为bin里的就是jvm。lib中则是jvm工作所需要的类库。
总之。开发利用JDK(调用JAVA API)开发了JAVA程序后。通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码。在JRE上运行这些JAVA字节码。JVM解析这些字节码。映射到CPU指令集或OS的系统调用。
后面会分享一些devops和DBA方面内容。感兴趣的朋友可以关注下!!