很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。
JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。
如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。
JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。
1、为什么Sun要让JDK安装两套相同的JRE?
这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。
2、如果一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。
ADD:(小小结)
1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。2.JRE -- java runtime environmentJRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)3.JDK -- java development kitJDK是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了。
- 浏览: 1451268 次
- 性别:
- 来自: 河北邯郸
文章分类
- 全部博客 (246)
- 错误调试 (30)
- 疑难杂症 (8)
- 生活记录 (6)
- 知识积累 (32)
- 博客摘录 (26)
- struts2.1权威指南 (6)
- Linux (37)
- 权限管理 (1)
- DWZ笔记 (1)
- javascript (8)
- Oracle (1)
- spring (8)
- MyBatis (11)
- 项目心得 (6)
- mysql (8)
- easyui (3)
- web前台 (2)
- maven (8)
- sitemash (0)
- 我的吐槽 (4)
- 缓存服务器 (6)
- 算法 (3)
- Intellij (3)
- github (3)
- android (2)
- 系统设计 (1)
- dos bat (1)
- nginx (3)
- nodejs (4)
- freemarker (1)
- mongodb (3)
- 推荐系统 (1)
- redis (7)
- eclipse (1)
- Storm (6)
- 小语言大工具 (1)
- hive (2)
- 大数据架构 (10)
- pig (1)
- ES (4)
- spark (2)
- DMP (1)
- 重新学Java (3)
- Flink (5)
最新评论
-
天台没有爱情:
基于Flink流处理的动态实时电商实时分析系统网盘地址:htt ...
Flink 应用 -
zzz2726:
147-150行:执行出错了引用public User que ...
Spring中jdbcTemplate的用法实例(一) -
18942512863:
Catch you
搞爆storm集群的bug追踪过程 -
商人shang:
u010719892 写道老乡 ,邱县d老相好
Intellij IDEA如何使用Maven Tomcat Plugin运行web项目 -
u010719892:
老乡 ,邱县d
Intellij IDEA如何使用Maven Tomcat Plugin运行web项目
发表评论
-
Kafka 文章大全
2018-03-28 14:11 640https://blog.csdn.net/u01357313 ... -
面试题
2017-09-21 14:47 768公司A: 1.讲讲你做的过的项目。 项目里有哪些 难 ... -
电商广告中常用的概念
2016-03-14 11:44 930点击率 CTR=(点击量/展现量)*100%平均点击价格 ... -
Java内存泄露监控工具:JVM监控工具介绍【转】
2015-07-22 15:26 18257jstack -- 如果java程序崩溃生成core文件,j ... -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
2015-03-27 17:33 63845互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无 ... -
(转)个人总结:京东技术体系员工级别划分及薪资区间
2015-03-09 17:52 82170(转)个人总结:京东技术体系员工级别划分及薪资区间 管 ... -
TortoiseSVN Commands
2014-09-17 16:14 2344这里只列出来英文版的,摘自:http://tortoises ... -
概要设计与详细设计的区别(转)
2014-09-01 17:02 1271概要设计与详细设计的区别 概要设计就是设计软件的 ... -
wordpress汉化
2014-07-28 15:35 935现在的主机管理面板,都提供一键快速安装wordpress、j ... -
网站架构相关
2014-07-05 23:43 832http://blog.csdn.net/jackieliul ... -
[SEO经验分享] 网站建设中使用Ajax技术的优缺点分析
2013-12-17 22:31 1018从事网站建设技术开发的朋友都知道,ajax并非一种新的技术 ... -
js日历
2013-05-05 21:52 1219由于项目需要做一个备忘录功能,所以,在网上找了一个日历将来自 ... -
网页中如何屏蔽(禁止)鼠标右键(复制功能)
2013-02-26 21:56 6416众所周知,要保护一个 ... -
加入收藏和设为主页代码
2012-12-26 18:51 1458转自:http://hi.baidu.com/56394 ... -
public static void main(String[] args){}函数诠释
2012-11-19 20:58 1174主函数的一般写法如下: public static v ... -
自定义个性网页鼠标图标
2012-10-24 16:11 29151.下面我们来看下代码:<DIV> </DI ... -
权限控制
2012-10-11 01:24 1082因为要搞一个简单的权限系统,所以最近我进行了一些设计和实现。经 ... -
卸载oracle的方法
2012-10-05 09:31 10911.关闭oracle所有的服务。可以在windows的服务管理 ... -
JSP 弹出对话框的方式总结
2012-09-30 01:57 14956JSP 网页在与用户交互的过程中,有时需要弹出提示框,通 ... -
Myeclipse快捷键
2012-09-28 21:31 15351. 【ALT+/】此快捷键 ...
相关推荐
网上摘录总结的关于jdk、jre、jvm的区别
jdk和jre的区别.doc
AIX JDK1.8 JRE1.8 IBM官网下载的安装包 jdk 和jre都有 32位,由于官网下载太慢,这里另存一份,需要的同学自取
免安装JDK1.7、JRE1.7,解压后配置操作系统环境变量即可使用
jdk(java development kit),就是java的开发工具集,顾名思义就是你做开发用的,其中包括javac,也就是java compiler等
java1.8jdk/jre.rar
JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。...JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。
详解介绍了JDK与JRE的区别,介绍了安装JDK时两套JRE的区别,已经分析了在运行java程序时,是如果搜寻JRE的。最后,介绍了各环境变量的作用,以及变量的的搜寻方式。
JDK 所需jar包
JDK及JRE安装配置是否成功,包含jdk与jre,安装及测试是否成功,比较详细
详细阐述了2者之间的区别,浅显易懂,希望大家能够喜欢
jdk1.7.0_10安装后jdk中jre文件 目录:C:\Program Files (x86)\Java\jdk1.7.0_10\jre下的jre文件
linux版本 jdk1.7 64位 jre jdk linux版本 jdk1.7 64位 jre jdk
我们在MyEclipse 的安装文件里会看到JDK和JRE两个文件,你知道JDK JRE 的作用与区别么
【Java面试题】JDK、JRE与JVM的区别
jdk6u43 64位,jdk/jre完整版