很多程序员已经干了一段时间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了。
- 浏览: 1464936 次
- 性别:
- 来自: 河北邯郸
文章分类
- 全部博客 (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 705https://blog.csdn.net/u01357313 ... -
面试题
2017-09-21 14:47 820公司A: 1.讲讲你做的过的项目。 项目里有哪些 难 ... -
电商广告中常用的概念
2016-03-14 11:44 963点击率 CTR=(点击量/展现量)*100%平均点击价格 ... -
Java内存泄露监控工具:JVM监控工具介绍【转】
2015-07-22 15:26 18351jstack -- 如果java程序崩溃生成core文件,j ... -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
2015-03-27 17:33 63917互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无 ... -
(转)个人总结:京东技术体系员工级别划分及薪资区间
2015-03-09 17:52 82227(转)个人总结:京东技术体系员工级别划分及薪资区间 管 ... -
TortoiseSVN Commands
2014-09-17 16:14 2394这里只列出来英文版的,摘自:http://tortoises ... -
概要设计与详细设计的区别(转)
2014-09-01 17:02 1316概要设计与详细设计的区别 概要设计就是设计软件的 ... -
wordpress汉化
2014-07-28 15:35 988现在的主机管理面板,都提供一键快速安装wordpress、j ... -
网站架构相关
2014-07-05 23:43 894http://blog.csdn.net/jackieliul ... -
[SEO经验分享] 网站建设中使用Ajax技术的优缺点分析
2013-12-17 22:31 1070从事网站建设技术开发的朋友都知道,ajax并非一种新的技术 ... -
js日历
2013-05-05 21:52 1266由于项目需要做一个备忘录功能,所以,在网上找了一个日历将来自 ... -
网页中如何屏蔽(禁止)鼠标右键(复制功能)
2013-02-26 21:56 6514众所周知,要保护一个 ... -
加入收藏和设为主页代码
2012-12-26 18:51 1500转自:http://hi.baidu.com/56394 ... -
public static void main(String[] args){}函数诠释
2012-11-19 20:58 1209主函数的一般写法如下: public static v ... -
自定义个性网页鼠标图标
2012-10-24 16:11 29691.下面我们来看下代码:<DIV> </DI ... -
权限控制
2012-10-11 01:24 1128因为要搞一个简单的权限系统,所以最近我进行了一些设计和实现。经 ... -
卸载oracle的方法
2012-10-05 09:31 11411.关闭oracle所有的服务。可以在windows的服务管理 ... -
JSP 弹出对话框的方式总结
2012-09-30 01:57 15009JSP 网页在与用户交互的过程中,有时需要弹出提示框,通 ... -
Myeclipse快捷键
2012-09-28 21:31 15871. 【ALT+/】此快捷键 ...
相关推荐
### JDK与JRE的区别 #### 一、JDK与JRE的基本概念 ##### JDK(Java Development Kit) JDK,即Java开发工具包,是面向开发人员使用的软件开发工具包(SDK)。它包含了编译、调试和运行Java应用程序所需的所有工具...
#### 三、JDK与JRE的区别 1. **目的不同**: - **JDK**主要用于开发Java应用程序,包含了编译、运行Java程序所需的所有工具。 - **JRE**则是运行Java应用程序的基础环境,仅包含了运行Java程序所需的组件。 2. *...
### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...
### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...
标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...
### JDK与JRE的区别:深度解析 在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间的区别之前,我们先来定义一下这两个概念。JDK是Java开发工具包,它包含了编译、运行和调试Java应用...
Java 1.8 JDK/JRE 是Java开发工具包和Java运行环境的组合,对于任何Java开发者来说都是必不可少的基础。在本压缩包中,你将找到用于编写、编译和运行Java应用程序的所有必要组件。让我们深入了解一下这两个核心组件...
### JDK与JRE的作用及区别 #### 一、概述 在深入探讨JDK与JRE的具体差异之前,我们首先需要了解这两个概念的基本定义及其在Java开发环境中的地位。 #### 二、JDK(Java Development Kit) JDK是Java开发工具包的...
JDK 所需jar包
#### 一、Java JDK与JRE的区别 1. **JRE(Java Runtime Environment)**:它包含了Java虚拟机(JVM)、Java类库和其他支持文件,是运行Java程序所必需的环境。 2. **JDK(Java Development Kit)**:不仅包含JRE中...
**Java开发工具包(JDK)与Java运行环境(JRE)** JDK,全称为Java Development Kit,是Oracle公司提供的用于开发Java应用程序的软件包。它包含了编译、调试和部署Java应用所需的所有工具,如Java编译器(javac)、...
JDK 及 JRE 安装配置是否成功 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java programming language 的核心组件,安装和配置它们是 Java 开发的第一步。本文将详细讲解 JDK 和 JRE 的安装...
java的开发工具集,顾名思义就是你做开发用的,其中来包括javac,也...所以jdk和jre的区别就度是一个用于开发,一个用于运行,联系就是他们都是java开发者所必备问的(除非你就像运行java程序,那么用jre就足够了)。
**Java开发工具包(JDK)与Java运行环境(JRE)详解** 在Java编程领域,JDK(Java Development Kit)和JRE(Java Runtime Environment)是两个至关重要的组件。JDK是Java开发者用于编写、编译和调试Java应用程序的...
JRE的安装过程与JDK类似,只是安装包和安装选项略有不同。在Oracle官网下载JRE后,按照同样的步骤进行安装,但不需要配置环境变量。 **三、JDK和JRE的关联** JDK包含了JRE,所以在安装JDK后,系统已经具备了运行...