博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jre与jdk的区别
阅读量:6500 次
发布时间:2019-06-24

本文共 1752 字,大约阅读时间需要 5 分钟。

hot3.png

1. 定义

JRE(Java Runtime Enviroment)是Java运行时环境。面向Java程序的使用者,而不是开发者。JRE是运行Java程序所必须环境集合,包含JVM标准实现及Java核心库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)是Java开发工具包,它提供了Java的开发环境(编译器javac等工具,用于将java文件编译成class文件)和运行环境(包括JVM和Runtime辅助包,用于解析class文件使其运行)。如果安装了JDK,那么不仅拥有了Java开发环境,也拥有了运行Java程序的平台。实际上JDK=开发工具tools+JRE+标准类库。

总结一下,jdk包含jre,jdk是jre的父级上级。jre只是jdk的一个子集存在。

2. 为什么安装JDK的时候会出现两套JRE

我们在安装JDK的时候会出现两个jre目录,一个是jdk的子目录(jdk内部目录),一个是jdk的同级目录(jdk外部目录),那么它们之间有什么区别呢?

先说一下Java的虚拟机是怎么回事

众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳。它会装载jvm.dll(windows下),这个动态连接库才是java虚拟机的实际操作处理所在。java.exe程序只负责查找和装载jvm.dll动态库,并调用它进行class文件执行处理。
“java”命令与“javac”命令其实都是launcher,负责启动JVM并把启动参数传给JVM而已。

专用JRE

JDK里面有很多用java所编写的开发工具,比如javac.exe、jar.exe等。同理javac.exe、jar.exe等也只是一个包装器,真正的功能代码是放在jar包和链接库文件里面的。那么这样的话这些用java写的文件就要用到Java的运行环境去跑,也就是JDK目内部目录的jre,这里面的jre是专门运行jdk工具的,称为专有JRE。专有JRE没有注册表设置,通常也不会运行外部的class文件。

公共JRE

公共JRE可由其他Java应用程序使用,它会注册到windows的注册表里面去,公共JRE就是为运行加载到计算机中的Java程序提供运行环境的

java自动更新指什么

平时所说的"java自动更新"是指公共JRE运行时环境的更新,不是JDK版本的更新。这个更新是为了能够让计算机使用最新版本正常运行一些网站或者Web应用等当中的Java程序。如果要升级JDK版本,只能够从官网中下载重新安装。

3. 如果一台电脑安装两套以上的JRE,那么谁决定用哪一套呢?

java.exe决定,java.exe的工作就是找到合适的JRE来运行java程序。java.exe按照以下按顺序来查找JRE:
自己的目录下有没有JRE->父目录有没有JRE->查询注册表

4. 我们从编辑java代码到运行调试的过程是怎样的?

windows系统调用运行javac.exe程序,然后启动JVM,将参数传递给JVM,由JVM做这个编译操作
windows系统调用运行java.exe程序,java.exe装载jvm.dll,这一步实际上就是把jvm虚拟机运行起来了,然后JVM根据java命令传递过去的工作进行对应的工作
5. jar包的作用
jar包我们可以理解为类似于zip压缩包的东西,只不过jar包里面多了有一种可执行jar包的东西。jar包具有最基本的功能,可以将多个文件、文件夹打包在一个文件里面,也可以在里面放可执行字节码(比如类文件),我们可以用jar.exe启动JVM然后在里面执行jar包里面的代码。

6.IDE通常是怎么处理的

以ij为例,它的安装目录里面会自带一个jre,但是没有jdk
所以也就是说,ide在编译.java文件的时候调用的是我们另外安装的JDK,但是运行的时候用的却是自己的jre,当然我们也可以修改ide的配置改成自己原本安装的jre

参考链接:

转载于:https://my.oschina.net/WinkJie/blog/3055007

你可能感兴趣的文章
DVWA默认用户名密码
查看>>
简述 clearfix 的原理
查看>>
【Project Euler】530 GCD of Divisors 莫比乌斯反演
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
获取文件最后修改时间的VC代码
查看>>
ThinkPHP子类继承Controller类的注意事项
查看>>
iphone UIView的一些基本方法理解
查看>>
sys.check_constraints
查看>>
vue问题
查看>>
Linux常用命令大全
查看>>
ThinkPHP 框架学习
查看>>
yii1框架,事务使用方法
查看>>
css3箭头效果
查看>>
Python学习笔记【第一篇】:认识python和基础知识
查看>>
MathType在手,公式不求人!
查看>>
测试用例设计
查看>>
三层架构
查看>>
Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
查看>>
解决方案(.sln)文件
查看>>
理解cookie和session机制
查看>>