JRE、JDK和JVM之间的关系
Java学了有两年了,要让详细说说JRE、JDK、JVM,确实不能脱口而出。下面在别人博客的基础上,总结一下。
JVM(Java Virtual Machine 即Java虚拟机)
它是整个Java实现跨平台的核心部分。所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
也可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将Java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体的平台如Windows/Linux运行这些Java程序。
JRE(Java Runtime Environment 即Java运行环境)
光有JVM还不能执行class文件,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里可以看到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是JVM,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在写完Java程序编译成.class之后,可以把.class文件和jre一起打包发给别人,这样别人就可以运行你的程序了。如果想要运行一个开发好的Java程序,只需要给计算机安装JRE即可。
JDK(Java Development Kit 即Java开发工具包)
在jdk的安装目录下有6个文件夹、一个src类库源码压缩包和其他几个声明文件。其中,真正在运行java文件时起到作用的是一下四个文件夹:bin、include、lib、jre。JDK包含JRE,而JRE包含JVM。bin:最主要的是javac(编译器);include:java和JVM交互用的头文件;lib:类库;jre:java运行环境;
总的来说,JDK用于Java程序的开发,而JRE是运行class文件的运行环境不具备编译Java文件的功能。JDK提供Java开发人员使用,其中主要包含了Java的开发工具,其次也包括JRE。所以安装了JDK也就有了JRE。
三者的关系
JVM:将字节码文件转换成具体系统平台的机器指令。
JRE:JVM+Java语言的核心类库。
JDK:JRE+Java开发工具包。
在实际开发的过程中:我们利用JDK(调用Java API)开发了属于我们自己的Java程序后,通过JDK中的编译程序(javac)将我们的java文件编译为java字节码文件(.class文件),然后在JRE上运行这些Java字节码文件,最后JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
JRE、JDK和JVM之间的关系的更多相关文章
- jre、jdk、jvm之间的关系
很多Java的程序员在写了很多代码之后,你问他JRE和JDK是是什么关系,JVM又是什么东西,他是不知道的. JVM(Java Virtual Machine) Java 虚拟机.它只认识 xxx.c ...
- JDK、JRE、JVM之间的关系
JDK.JRE.JVM之间的关系 1.JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...
- JDK、JRE与JVM之间的关系
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧: JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Env ...
- 弄懂 JRE、JDK、JVM 之间的区别与联系
其实很多 Java 程序员在写了很多代码后,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云.本篇不会讲述 jvm 底层是如何与不同的系统进行交互的,而主要理清楚三者之 ...
- java学习之Java中JDK,JRE和JVM之间的关系(转载)
最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...
- Java中JDK,JRE和JVM之间的关系
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- Java中JDK,JRE和JVM之间的关系-(转载)
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- JDK,JRE,JVM之间的关系
JDK包括JRE包括JVM http://java-mzd.iteye.com/blog/838514
- JDK、JRE、JVM之间的关系及JDK安装
JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 .JDK (Java Development Kit):是Java ...
随机推荐
- POJ 3150 Cellular Automaton(矩阵乘法+二分)
题目链接 题意 : 给出n个数形成环形,一次转化就是将每一个数前后的d个数字的和对m取余,然后作为这个数,问进行k次转化后,数组变成什么. 思路 :下述来自here 首先来看一下Sample里的第一组 ...
- Linux网络编程5——使用UDP协议实现群聊
引言 本文实现的功能类似于我之前所写的一篇博文(Linux之select系统调用_2),区别在于进程之间的通信方式有所不同.之前的文章中,我所使用的是管道,而本文我将会使用socket接口. 需求 客 ...
- 4 tips for staying productive on Friday
4 tips for staying productive on Friday如何让你的周五和周一一样有效率1.Schedule Your Day with Tasks 用任务计划一天 Sometim ...
- 读取redis中的数据时出现:MISCONF Redis is configured to save RDB snapshots
读取redis中的数据时出现:MISCONF Redis is configured to save RDB snapshots 以下为异常详细信息: Exception in thread &q ...
- http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html
http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html
- git - 简易指南
http://www.bootcss.com/p/git-guide/ git - 简易指南
- PHP 简介
lamp LAMP - Linux Apache MySQL PHP MySQL - 三个层次:文件层次,服务层次,界面层次. LAMP-Linux Apache MySQL PHP 本机 :127. ...
- dojo 二 AMD模块
可参考官方教程:http://dojotoolkit.org/documentation/tutorials/1.7/hello_dojo/教程里主要定义了两个方法,setText设置文本内容和res ...
- aopalliance.jar —— 下载地址
下载地址:http://sourceforge.net/projects/aopalliance/files/aopalliance/1.0/aopalliance.zip/download TIPS ...
- iPhone 已停用
如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的 iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...