JDK 和 JRE 的区别

任何 Java 开发者首要的第一件事就是安装 jdk,在安装 jdk 的过程中,jre 会一并弹框安装,安装完毕后配置系统(用户)环境变量,之后就可以愉快的开发了。。。

JRE:Java Runtime Environment

Java 运行环境,也就是说,即使不安装 JDK,只安装 JRE,也可以成功运行 JAVA 程序,但不能开发。JRE 包含 java 虚拟机、java 基础类库,是使用 Java 语言编写程序所需要的运行环境

JDK:Java Development Kit

Java 开发工具包,是程序员使用 Java 编写程序所必须的开发工具包,包含 jre、java 开发额外提供的组件如 javap,java 等、调试工具、文档以及案例程序

java 是解释型语言,开发者编写 .java 文件,编译器编译为 .class,虚拟机再解释为机器可以识别的机器语言,不同环境下虚拟机不同,这也叫一次编写,到处运行

作为开发者,必须安装 JDK,如果仅仅需要运行 Java 程序,安装 JRE 就足够了,orcale 官网就可以下载。


此时我们就会有一个疑问,既然 jdk 包含 jre,为什么安装 jdk 时还需要再安装 jre,这样不就有两个 JRE 了么?

实际这样做是为了分工:是因为 jdk 中的工具也是通过 java 代码实现的,要想通过这些工具编写 java 代码,还需要一套独立的 jre 环境,因此 jdk 自身所包含的那套 jre 主要支持这部分功能

下面我列举出 JDK 相比 JRE 所额外提供的功能:

  • javap:java 代码编译器
  • java:java 代码解释器
  • jdb:java 代码调试器,可以设置断点,逐步运行程序
  • Jconsole:系统调试和监控的工具
  • jstat:对 jvm 的内存使用情况监控
  • jmap:打印 jvm 内存使用情况,需使用特殊软件分析结果

既然同一台机器包含多套 JRE,在执行 java.exe 时,一般通过如下顺序决定具体要使用的 :

  1. 当前目录下有没有 JRE
  2. 父目录下有没有 JRE
  3. 查询注册表

实际上两套 JRE 也是有区别的,JDK 同级目录下的 JRE 包含 client 和 server 两个目录,JRE 本身目录只包含 client。这三个目录下都包含 jvm.dll,它就是虚拟机本身,这里 client 和 server 分别表示虚拟机的两种执行状态:

  • client:默认虚拟机模式,启动较快
  • server:启动减慢,但后续运行较快

我们可以通过修改 jre 目录下 jvm.cfg 来修改默认模式,或直接通过如下命令:java -client/server classname 来指定虚拟机模式

最后,jvm 是不能单独运行的,当 jvm 启动后首先会执行 LoadLibrary() 与 GetProcAddress() 方法来载入辅助用的动态链接库,这些辅助用的动态链接库必须位 于 jvm.dll 所在目录的父目录之中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值