首页 > 基础教程 > 基础知识 > JDK&JRE&JVM

Java中JDK和JRE的区别

JRE是Java Runtime Environment的缩写,是Java程序的运行环境。

既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?学过MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。

JDK是Java Development Kit的缩写,是Java的开发工具包。

主要包含了各种类库和工具,当然也包含了另外一个JRE,那么为什么要包含另外一个JRE呢?而且/JRE/bin目录下,包含有server一个文件夹~包含一个jvm.dll,这说明JDK提供了一个虚拟机。另外,JDK的bin目录下有各种Java程序需要用到的命令,与JRE的bin目录最明显的区别就是JDK文件下才有javac,这一点很好理解,因为JRE只是一个运行环境而已,与开发无关。正因为如此,具备开发功能的JDK所包含的JRE下才会同时有server的JVM,而仅仅作为运行环境的JRE下,只需要server的jvm.dll就够了。注意:JDK所提供的运行环境和工具度需要进行环境变量的配置以后,才能使用,最主要的配置就是把/bin目录设置为Path环境变量值的一部分。

另外,安装JRE的时候安装程序会自动把JRE的java.exe添加到了系统变量中。系统变量Path的最前面有%SystemRoot%system32;%SystemRoot%;这样的配置,那样到Windows/system32目录下main去看看,会发现一个java.exe文件。这样就无需配置环境变量,也可以运行Java程序了。

JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。

JDK,JRE区别

通俗点来说: jdk是java的开发包,其中包括jre;jre仅仅是java的运行时环境;而JDK包括了同版本的JRE,此外还包括有编译器和其它工具

1. 如果安装了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。

2. JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

3. 相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm, 而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

JDK,JRE区别疑问总结

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被执行有很大的关系。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

java中jdk多大_Java中JDK和JRE的区别相关推荐

  1. java内存堆和栈_java中堆,栈主要区别及内存存储

    java堆.栈.堆栈的区别 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度 ...

  2. java关键字有什么用_JAVA中关键字有什么用

    展开全部 Java关键e68a84e8a2ad3231313335323631343130323136353331333363356566字及其作用 一. 关键字总览: 访问控制 private pr ...

  3. java中的 的意思_java中 的意思是什么意思是什么意思是什么意思

    关于 java中 的意思是什么意思是什么意思是什么意思的搜索结果 问题 java中 的意思是什么意思是什么意思是什么意思 java中 的意思是什么意思是什么意思是什么意思... 云计算小粉 2019- ...

  4. java int转无符号_Java 中使用无符号整型(unsigned int)的使用方法

    背景 计算机科班出身大多学过离散数学,或者理工类专业也大多学习过 C 或 C++ 语言,从中我们了解到基本类型的整形有 short.int.long 等,还分别有无符号(unsigned)和带符号(s ...

  5. java中定义一个时间_Java中的日期和时间

    根据个人目前正在编写的<Java核心编程-基础篇>的规划,这部分属于第15章内容,这里沿用了书中的章节编号.另外,因为原文篇幅太长,这里适当做了删减. 15.1.概述 在 Java 8 之 ...

  6. java swap函数的包_java中swap函数

    ? ? ? 第1章 第2章 第3章 第4章 java语言概述 Java语言基础 对象与类 ...("swap方法里,a的值是" + a + ";b的值 是" + ...

  7. java中write方法作用_java中的封装,继承,多态,这3个在程序中起着重要作用

    一.封装 1. 封装概述 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改. 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问.要访 ...

  8. java中函数的重载_Java中函数的重载

    函数的重载 1.同一个类 2.同名函数 3.参数个数不同或者参数类型不同 4.java是严谨性语言,如果函数出现的调用的不确定性,会编译失败. public static int add(int a, ...

  9. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  10. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

最新文章

  1. shell脚本的测试与判断的基础实施
  2. 数据结构 图的定义
  3. Android Java 代码设置 layout_weight 属性
  4. 【简洁代码】1061 判断题 (15分)_18行代码AC
  5. 农历php,PHP农历公历转换
  6. 基础省选+NOI 第9部分 网络流
  7. 如何避免重要需求遗漏?
  8. 桌面虚拟化之用户体验篇
  9. 百度地图迁徙大数据_百度地图大数据看十一:各地商圈出现“红色拥堵”,游乐场迎来“高光时刻”...
  10. Oracle根据外键名称查找关联的表与列
  11. 残酷的生命,严峻的人生,短暂的美好
  12. 学习C语言的必备书籍-从入门到精通
  13. 报错error C3872: '0x3000': this character is not allowed in an identifier
  14. Python 图像拼接
  15. AD19--快速画原理图库文件、PCB库文件(以TL072为例)
  16. c语言循环结构排序,C语言循环结构 -C语言冒泡排序算法(附带源码)
  17. python——django连接html登陆界面
  18. 探究APP换肤机制的设计与实现
  19. axios向springboot后台传递json数据
  20. 微软新品发布会汇总:更新Surface硬件产品 首发智能耳机

热门文章

  1. 领域驱动设计核心概念
  2. 感知层在物联网中的重要性
  3. 网易云课堂C++开发工程师案例-网吧前台收银系统(MFC+ADO)C++收银系统完整
  4. 华为服务器系统图标,服务器图标
  5. java swing实现抖音上的表白程序
  6. hdtune硬盘检测详解教程
  7. 【2019-2020春学期】数据库作业18:第八章: 数据库编程(实验课大作业)
  8. python计算皮尔森相关系数
  9. 线性代数常用知识点总结
  10. C语言自学——lesson4