[Java] JRE、JDK和JVM的区别
在Java语言的学习过程中,配置环境时首先会接触到JRE和JDK的概念,后面随着了解的深入,不可避免会学习到JVM。
JRE,全称Java Runtime Environment,也被写成Java RTE。顾名思义,JRE提供Java应用运行所需的最小支撑环境,它包括JVM、核心类、和一些支持文件。
JDK,全称Java Developent Kit,作为Java应用和applets的软件开发环境。它包括Java运行时环境(JRE),解释器/加载器(Java),编译器(javac),归档器(jar),文档生成器(Javadoc)以及Java开发中所需的其他工具。
JVM,全称Java Virtual Machine,首先,JVM是一套工作的规范,但是实现提供者可以独立选择算法;其次,JVM是一个满足JVM规范要求的计算机程序实现;最后,JVM是一个运行时实例,每当在提示符下编写JAVA命令运行Java类时,都会创建一个JVM实例。
JDK 是提供开发和运行Java程序的环境,作为一个工具集(包),JDK包括两方面:
1. 开发工具:提供Java程序运行的环境;
2. JRE:执行Java程序。
Java开发人员需要使用JDK。
JRE为执行Java程序的机器提供运行环境,作为一个安装包,JRE仅仅被用于运行Java程序,不能用于开发。
JVM作为JDK和JRE的重要组成,无论Java程序使用JRE还是JDK运行,都会由JVM去一行一行地执行Java程序,JVM被作为一个解释器(interpreter)。
JRE与JDK的运行过程:
一、JRE包括:
(1)部署技术,包括部署,Java Web Start和Java Plug-in。
(2)用户界面工具包,包括抽象窗口工具包(AWT),Swing,Java 2D,辅助功能,图像I / O,打印服务,声音,拖放(DnD)和输入方法。
(3)集成库,包括接口定义语言(IDL),Java数据库连接(JDBC),Java命名和目录接口(JNDI),远程方法调用(RMI),Internet Inter-Orb协议上的远程方法调用(RMI-IIOP)和脚本。
(4)其他基础库,包括国际支持,输入/输出(I / O),扩展机制,Bean,Java管理扩展(JMX),Java本机接口(JNI),数学,网络,覆盖机制,安全性,序列化和Java for Java处理(XML JAXP)。
(5)Lang和util库,包括lang和util,管理,版本控制,zip,仪器,反射,集合,并发实用程序,Java Archive(JAR),Logging,Preferences API,Ref Objects和Regular Expressions。
(6)Java虚拟机(JVM),包括Java HotSpot客户端和服务器虚拟机。
类加载器(Class Loader)
类加载器加载执行程序所需的所有必要类。 它通过将本地文件系统的名称空间与通过网络导入的名称空间分开来提供安全性。 这些文件可以从硬盘,网络或其他来源加载。
字节码验证器(Byte Code Verifier)
JVM通过字节代码验证程序放置代码,该代码验证程序检查格式并检查非法代码。 例如,非法代码是违反对象访问权限或违反指针实现的代码。
字节代码验证程序可确保代码符合JVM规范,并且不会违反系统完整性。
解释器:
在运行时,解释器加载,检查和运行字节代码。 解释器具有以下两个功能:
执行字节代码
对底层硬件进行适当的调用
二、JDK和JRE之间的交互:
[Java] JRE、JDK和JVM的区别的更多相关文章
- Java中JRE、JDK和JVM的区别
一.三者的基本概念: JRE(Java Development Kit):Java的运行环境: JDK(Java Runtime Enviroment):Java开发工具包: JVM(Java Vir ...
- Java学习2 - JDK和JRE和JVM的区别_JDK的下载安装_环境变量配置
一 JDK和JRE和JVM的区别 Jdk: Java Development kit - Java 开发工具 JRE: Java Runtime Environment - java运行环境 JVM: ...
- Java虚拟机(JVM),JDK,JRE和JVM的区别——通过示例学习Java编程(2)
Java虚拟机(JVM),JDK,JRE和JVM的区别 作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid ...
- Java中JVM、JRE和JDK三者有什么区别和联系?
Java 语言的开发运行,也离不开 Java 语言的运行环境 JRE.没有 JRE 的支持,Java 语言便无法运行.当然,如果还想编译 Java 程序,搞搞小开发的话,JRE 是明显不够了,这时候就 ...
- Java中JDK、JRE和JVM三者之间有什么区别和联系?Java基础!
任何语言或软件都需要一个运行环境.正如人想生活在空气中,鱼想生活在水中一样,喜荫植物不能暴露在阳光下,任何物体个体的存在都离不开其所需的环境,编程语言也是一样的. 接下来就详细描述一下Java中JDK ...
- 细分java环境中的JDK、JVM、JRE
细分java环境中的JDK.JVM.JRE 近来小看了下Android,扑面而来一堆概念JDK.JVM.JRE.SDK.NDK.ADT.缕了一下,其中JDK.JVM.JRE是java环境的东西,而SD ...
- Java的一些常见问题,JRE,JDK,JVM,包等概念理解
Java常见错误: 文件名字应该与文件中public类的名字相同 public static void main(String[] args); 如何定位错误和解决错误. JVM,JRE,JDK解释和 ...
- jdk、jre与jvm的区别与联系
为了学习数据库,重装了系统,之前前一直在用eclipse,现在准备换成myeclipse,这之前当然需要重新设置环境变量,顺手写下有关jdk.jre与jvm的区别与联系以供交流参考. 首先来说一下JD ...
- JDK、JRE、JVM的区别
JDK: JDK(Java Development Kit)顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的.它除了包括完整的JRE(Java Runtime Environment),Jav ...
随机推荐
- VisualSVN 关于权限(第2篇)
最终的答案: 仓库本身不能给他增加访问权限,必须增加否则连不上,不增加的时候 他默认就是No Access: 仓库本身可以理解为:祖宗,他是访问权限的根基.子目录会继承他的权限. 那么既然必须给他增加 ...
- 改写Unity DropDown 支持多次点击同一选项均回调
[很久前的一个Note,不知道现在的Unity Dropdown是否已经支持该特性] Unity UGUI是开源的: https://bitbucket.org/Unity-Technologies/ ...
- Uploadify 之使用
uploadify 3.2.1是 jQuery提供的一个上传插件,其参数详解见 http://www.cnblogs.com/yangy608/p/3915349.html 这里列举一个实际应用的例子 ...
- java轻松玩转httpget和httppost
废话不多少说,直接上代码 //get请求 public static void HttpClientGet(String url) throws Exception { // 获取http客户端 Cl ...
- React中setState如何修改深层对象?
在React中经常会使用到setState,因为在react生态中,state就是一切.在开发过程中,时长会在state中遇到一些比较复杂的数据结构,类似下面这样的: 这时需要我们修改list中obj ...
- 从win到多系统
相信有不少电脑爱好者喜欢折腾系统,尤其还是一个小白(感觉多系统强的不要不要的,各种崇拜),然后就走上了深渊. 首先,我一开始也是个win系统的忠实用户,没用过其他系统的我几乎不知道其他系统的存在,反正 ...
- linux下setsockopt函数的使用
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...
- Vue下的index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 成功解决 AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
在导入keras包时出现这个问题,是因为安装的tensorflow版本和keras版本不匹配,只需卸载keras,重新安装自己tensorflow对应的版本就OK了.可以在这个网址查看tensorfl ...
- Python一些细节
1.python set() dict() 有序问题,不同版本之间的差异,与Java/C++的对比 https://www.cnblogs.com/niuxichuan/p/11608386.html ...