Java学习-003-JDK、JRE、JVM简介
此文主要对 JDK、JRE、JVM进行简单的介绍,给各位亲们一个参考。若有不足之处,敬请各位大神指正,不胜感激!
一、基本概念
JDK(Java Development Kit:Java 开发工具包) 是面向开发人员使用的 SDK(Software Development Kit:一般指软件开发包, 可以包含函数库、编译程序等), 它提供了 Java 的开发环境和运行环境。我们一般用 JDK 来代指Java API,Java API 是 Java 的应用程序接口,是前辈们写好的一些 Java Class,包括一些重要的语言结构以及基本图形,网络和文件 I/O 等等 ,我们在自己的程序中,调用前辈们写好的这些 Class,来作为我们自己开发的一个基础。随着 Java 的不断快速发展,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。
JRE(Java Runtime Environment:Java 运行环境) 是指 Java 的运行环境,也就是我们说的JAVA平台, 是面向 Java 程序的使用者, 而非开发者。所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
JVM(Java Virtual Machine:Java 虚拟机) 是指 Java 虚拟机, JVM 是 JRE 的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java 语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件(class文件)。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。
二、JDK安装目录JRE
安装 JDK 后,电脑会有两套 JRE,一套位于Java\jdk\jre(代号A),另外一套位于 Java\jre(代号B) 目录下。JDK 的 bin 目录下有各种 Java 程序需要用到的命令,与 jre 下的 bin 目录最明显的区别就是 jdk 下才有 javac。

JRE 的地位类似于 PC 机,Win32/64 应用程序需要操作系统帮我们运行,同样 Java 程序也必须要 JRE 才能运行。所以装完 JDK 后,如果分别在硬盘上不同目录安装了多套 JRE,那么电脑就有多台虚拟的 Java PC 机,均具有运行 Java 程序的功能。在一定程度上,只要亲的电脑安装了 JRE,就可以正确运行 Java 应用程序(JRE 的版本不能低于 Java应用程序 编译的版本,防止程序出错)。
三、Java程序运行时如何选择JRE
若系统中存在多套以上的 JRE,Java 应用程序运行时的 JRE 如何确定呢?这个重大任务就落在 java.exe 身上。java.exe 的工作就是找到合适的JRE来运行 Java应用程序。java.exe 依照以下顺序来查找 JRE:
- 当前目录下的 JRE;
- 父目录下的 JRE;
- 系统变量配置
所以 java.exe 的运行结果与你的电脑里面哪个 JRE 被执行有很大的关系。
四、三者关系
下图很好的表面了JDK,JRE,JVM三者间的关系:

五、Java应用程序运行概要示意图
利用 JDK(调用Java API)开发了属于的 Java 程序后,通过 JDK 中的编译程序(javac)将我们的文本 Java 文件编译成 .class 文件,在 JRE 上运行这些 .class 文件,JVM 解析这些 .class 文件中的字节码,映射到 CPU 指令集或 OS 的系统中调用。概要示意图如下所示:

Java学习-003-JDK、JRE、JVM简介的更多相关文章
- Java学习 1.2——简述JVM,JRE,JDK的关系
在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...
- Java基础知识 ——JDK,JRE和JVM
1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...
- java的概念了解(jdk,jre,jvm,javase,javaee,javame)
jvm jvm:java virtual machine,俗称:java虚拟机,只认识xxx.class这类文件 jre jre:java runtime environment,俗称java运行环境 ...
- 1、Java语言概述与开发环境——JDK JRE JVM理解
一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...
- Java的特性和优势以及不同版本的分类,jdk,jre,jvm的联系与区别,javadoc的生成
Java 1.Java的特性和优势 Write Once,Run Anywhere 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java的三大版本 JavaSE:标 ...
- Java开发介绍之JDK JRE JVM 和 环境变量配置
一.JDK>JRE>JVM JDK(Java Development Kit):Java开发工具包 JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和 ...
- JDK,JRE,JVM区别与联系(ZZ)
http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...
- JDK,JRE,JVM区别与联系-理解与概括
我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...
- JDK,JRE,JVM区别与联系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
随机推荐
- 【BZOJ】1934: [Shoi2007]Vote 善意的投票(网络流/-二分图匹配)
http://www.lydsy.com/JudgeOnline/problem.php?id=1934 一开始我想到了这是求最小割,但是我认为这题二分图可做,将1的放在左边,0的放在右边,然后朋友连 ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- Ubuntu 14.04 AMD 64位 下 Android Studio 的安装
Ubuntu 14.04 AMD 64位 下 Android Studio 的安装 作者:yoyoyosiyu 邮箱:yoyoyosiyu@163.com 时间:2015年8月25日 Android ...
- 【原】Windows下Nexus搭建Maven私服
一.Maven安装 详见Java开发环境搭建 二.Nexus安装 2.1.下载 地址:http://www.sonatype.org/nexus/go/ 选择OSS(ZIP)版本 2.2.安装 将安装 ...
- Web 在线文件管理器学习笔记与总结(3)创建文件
① 创建文件 a. 文件名的合法性:不能包含 \/:*"<>| 等特殊字符 b. 检测当前目录下是否存在同名文件,如果存在提示请重命名后创建,如果不存在则直接创建 index.p ...
- Android 调用资源字符串的几种方法
在 Layout XML 调用字符串资源: <TextView android:layout_width="fill_parent" android:layout_heigh ...
- 关于Depth Bounds Test (DBT)和在CE3的运用
Depth Bounds Test (DBT) Depth Bounds Test(深度范围检测),是Nvdia GeForce 6系列以后显卡的特性(GPU Programming Guide Ge ...
- Ubuntu kill命令用法详解
转自:Ubuntu kill命令用法详解 1. kill 作用:根据进程号杀死进程 用法: kill [信号代码] 进程ID root@fcola:/# ps -ef | grep sen ...
- 设计和实现OLAP解决方案
设计和实现OLAP解决方案 第一讲 简介首先,啥叫数据仓库? 数据仓库就是数据的仓库!用外文说叫Data Warehouse,简称DW. 是不是哐当倒下一片啊,要不咱换个专业点的说法? 数据仓库是 ...
- [转]PHP高效率写法(详解原因)
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静 ...