关于你天天见到的JDK、JRE和JVM
什么是JDK、JRE、JVM?
大家都知道电脑的操作系统是由汇编和C语言写出,因此操作系统无法直接识别其他语言。这时我们就需要为我们写的Java程序配备一名翻译官 ----- 编译环境,将Java程序翻译成电脑可以识别的程序,C或者汇编。
所以我们在安装配置Java运行环境的时候,就把这个翻译官给添加进去了,就是我们的JDK
那么程序在运行的时候,整个的流程是这样的:
书写Java源程序(.java)
JDK将源程序编译成字节码文件(.java --> .class)
JRE(运行环境)将字节码进行解释,并执行命令
字节码文件(.class)中的指令变为对应操作系统的机器码
操作系统执行命令
整个的JDK构成如下图所示:

那么,最下面的JVM是干嘛的?
java虚拟机(Java Virtual Machine,简称JVM),即java虚拟机,由上面的图示可以知道,JVM是整个java架构当中最为底层的存在,它直接与操作系统进行对接,为 java运行时的环境制定规则,是一种面向计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar:rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包),Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
那么,包含JVM的JRE又是干嘛的?
Java运行环境(Java Runtime Environment,简称JRE)是指运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
它包括两部分:java运行环境(JavaRuntimeEnvironment)和java插件运行环境(JavaPlug-inJavaRuntimeEnvironment),是一个可以在其上运行、 测试和传输应用程序的Java平台。
由上面的图示可以看得出来,JRE包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具——编译器、调试器和其它工具。JRE中不仅存在着JVM,还有着lang and util base libraries和Other Base Libraries等各种基础工具类,以及JDBC、IDL 和 RMI等底层的数据接口,还有一些用户封装的接口开发工具,如Swing、Java 2D 等。这些各种各样的工具和基础接口组成了JAVA运行时的环境。
JRE需要辅 助软件——JavaPlug-in——以便在浏览器中运行applet.J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE.如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发 Java软件,请下载JDK.在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK.
知道了JVM、JRE,那么我们安装的JDK是干什么用的?
JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK.最主流的 JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket, 还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。
JDK一共有三种版本:
- SE(J2SE):standard edition,标准版,最通用的一个版本。
- EE(J2EE):enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序。
- ME(J2ME):micro edtion,主要用于移动设备、嵌入式设备。
JDK的7个主要应用程序:
- Javac:Java编译器,将Java源代码转换成字节码。
- Java:Java解释器,直接从类文件执行Java应用程序字节代码。
- appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
- Javadoc:根据Java源码及说明语句生成HTML文档。
- Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
- Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
- Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
关于你天天见到的JDK、JRE和JVM的更多相关文章
- Difference between JDK, JRE and JVM
With Java programming language, the three terms i.e. JDK, JRE and JVM will always be there to unders ...
- java学习之Java中JDK,JRE和JVM之间的关系(转载)
最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...
- Java中JDK,JRE和JVM之间的关系
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- Java基础知识 ——JDK,JRE和JVM
1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...
- Java中JDK,JRE和JVM之间的关系-(转载)
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- JAVA语言的跨平台性和JDK,JRE与JVM
Java虚拟机--JVM ~JVM:java虚拟机简称JVM是运行所有java程序的假想计算机,是java程序的运行环境,是java最具有吸引力的特性之一,我们编写的java代码,都运行在JVM之上 ...
- 【java】JDK、JRE、JVM的关系
目录结构: contents structure [-] 什么是JDK,JRE,JVM 安装JDK的时候为什么有两个jre 专用JRE 共用JRE 共用JRE和专用JRE的对比 java的跨平台特性 ...
- 01-01java概述 doc命令、jdk\jre下载安装、path、classpath配置、开发中常见小问题
1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (4)软件开发(理解) 软件:是由数据和指令组成的.( ...
- JDK,JRE,JVM,三者的区别于联系?
万事开头难,从基础抓起! 下载JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK:Java Dev ...
随机推荐
- PHP 将数组转换为JSON字符串<兼容中文>
1 /************************************************************** 2 * 3 * 使用特定function对数组中所有元素做处理 4 ...
- 系统日志报错i8042prt无法加载
原因如下: 解决方法为: 此报错可以直接忽略,不过由此可能导致即插即用(plugplay)报错,在即插即用报错时,重启服务器即可.
- Python3网络学习案例一:Ping详解
1. 使用Ping做什么 ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常.网络是否通畅等. 2. 效 ...
- 【Luogu】P1306 斐波那契公约数 题解
原题链接 嗯...很多人应该是冲着这个标题来的 (斐波那契的魅力) 1.分析题面 点开题目,浏览一遍题目,嗯?这么简单?还是蓝题? 再看看数据范围,感受出题人深深的好意... \(n,m \leq 1 ...
- mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 基于YOLO-V2的行人检测(自训练)附pytorch安装方法
声明:本文是别人发表在github上的项目,并非个人原创,因为那个项目直接下载后出现了一些版本不兼容的问题,故写此文帮助解决.(本人争取在今年有空的时间,自己实现基于YOLO-V4的行人检测) 项目链 ...
- Pycharm激活码无偿分享,2020年最新Pycharm永久激活码!
2020年10月7日08:04:34更新的Pycharm激活码,还热乎着呢,速用~ 如果下边的这个Pycharm激活码过期失效了的话,大家可以关注我的微信公众号:Python联盟,然后回复" ...
- linux常用命令和系统基本目录
Linux 基础命令及基本目录 一.网卡 1.网卡配置文件路径 /etc/sysconfig/network-scripts/ifcfg-eth0 配置文件: TYPE=Ethernet # 以太 ...
- 家庭版window10找不到文件'gpedit.msc'。请确定文件名是否正确后 ,再试一次
今天遇到电脑找不到gpedit.msc文件,所以记录一下这个问题的解决方法 1. 首先建立一个空白文档 代码如下: @echo off pushd "%~dp0" dir /b ...
- ClassNotFoundException: java.util.ArrayList$SubList 错误
ClassNotFoundException: java.util.ArrayList$SubListjava.lang.RuntimeException: java.lang.ClassNotFou ...