您的位置:首页 > 编程语言 > Java开发

jvm跟jdk跟jre的不同和关系

2013-10-24 22:35 531 查看
做了许久的java开发,是不是还没弄清这三者的关系?

1、JVM -- java virtual machine
JVM就是我们说的java虚拟机,它是java实现跨平台的核心部分。java程序会首先被编译为.class的类文件,这种类文件可以在java虚拟机上执行,也就是说class并不直接与机器的操作系统相交互,而是通过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行,而本地系统又解释给CPU执行。所以java程序和CPU之间是隔了JVM和平台操作系统。所以JVM其实是操作系统上运行的一个程序。

2、JRE -- java runtime environment
JRE指的是java运行时环境。光有JVM还不能让.class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库(lib)。在JDK的安装目录里你会发现有jre目录,jre目录中有文件夹bin和lib,在这里可以认为bin里的文件就是jvm,他们很多都是.exe/.dll结尾(windows下),所以它是可执行程序(JVM),lib中则是jvm工作所需要的类库,可以看到很多.jar文件,而jvm和lib合起来就是jre了。所以,在你写完java程序编译成.class之后,把.class文件和jre一起打包,然后再写一个用来引导程序启动的cmd文件,再一起打包,这样你就可以在其他没有安装jre的windows运行你写程序了(jre里有运行.class的java.exe)。
3、JDK -- java development kit
JDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境
(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: