因为对jdk,jre,jvm这三者的联系与区别,一直都是模模糊糊的,所以今天特写此文,来整理下三者的关系。捋一捋思路~
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包含jvm
jre,是为了保证java程序能够运行时,所必备的一基础环境,也就是它只是保证java程序运行的,不能用来开发,而jdk才是用来开发的,而想要开发java,必须包含能够运行的环境,因此,jdk是包含jvm的。并且所有的java程序都要在jre下才能运行。
jdk包括jvm和java核心类库和支持文件。与jdk相比,它不包含开发工具——编译器、调试器和其它工具。
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的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库。
总之,开发利用jdk(调用java api)开发了java程序后,通过jdk中的编译程序(javac)将文本java文件编译成java字节码,在jre上运行这些java字节码,jvm解析这些字节码,映射到cpu指令集或os的系统调用。
后面会分享一些devops和dba方面内容,感兴趣的朋友可以下!!
- 上一篇:
- 下一篇: 自考本科的步骤(什么是自考本科)