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了。
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了。
相关文章推荐
- JAVA编程思想第四版-多线程的练习答案之练习11
- java类库的阅读笔记_jdk1.7.0_40_java.io.Serializable
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
- java实例三维空间求点之间的距离。。。。
- ubuntu 13.04 jdk1.7 ant安装配置
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
- java io系列07之 FileInputStream和FileOutputStream
- java读取大文本直接插入Mysql数据库,10万条数据4秒执行完
- MyEclipse中编写的java源文件无法再cmd下编译通过解决办法
- java中的负数表示
- JAVA操作properties文件
- Myeclipse最全快捷键
- 【JAVA】this和super关键字的用法
- struts2实现文件上传和下载
- Java静态类
- 转:myeclipse 8.x 插件安装方法终极总结
- JVM性能优化, Part 3 - 垃圾回收
- myeclipse的快捷键和myeclipse快捷键设置
- 关于java web自动化测试工具 selenium
- eclipse 下一些常用到插件到官方地址