此文主要对 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:

  1. 当前目录下的 JRE;
  2. 父目录下的 JRE;
  3. 系统变量配置

所以 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简介的更多相关文章

  1. Java学习 1.2——简述JVM,JRE,JDK的关系

    在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...

  2. Java基础知识 ——JDK,JRE和JVM

    1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...

  3. java的概念了解(jdk,jre,jvm,javase,javaee,javame)

    jvm jvm:java virtual machine,俗称:java虚拟机,只认识xxx.class这类文件 jre jre:java runtime environment,俗称java运行环境 ...

  4. 1、Java语言概述与开发环境——JDK JRE JVM理解

    一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...

  5. Java的特性和优势以及不同版本的分类,jdk,jre,jvm的联系与区别,javadoc的生成

    Java 1.Java的特性和优势 Write Once,Run Anywhere 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java的三大版本 JavaSE:标 ...

  6. Java开发介绍之JDK JRE JVM 和 环境变量配置

    一.JDK>JRE>JVM JDK(Java Development Kit):Java开发工具包 JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和 ...

  7. JDK,JRE,JVM区别与联系(ZZ)

    http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...

  8. JDK,JRE,JVM区别与联系-理解与概括

    我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...

  9. JDK,JRE,JVM区别与联系

    JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...

随机推荐

  1. 不要在init和dealloc函数中使用accessor

    不要在init和dealloc函数中使用accessor 文章目录 Objective-C 2.0 增加了 dot syntax,用于简单地调用成员变量的 accessor.相当于 java 的 ge ...

  2. 诅咒JavaScript之----ArcGIS JavaScript 点聚合 ClusterLayer

    对一个之前一直做winForm的 菜鸟来说,突然接触这么神奇的语言,基本上每天都会诅咒一下这门神奇的语言. 最近做了一个小网站,底图用的是天地图的服务,用ArcGIS JavaScript提供的一些G ...

  3. thinkphp框架中处理标签中条件输出

    这个问题是这样的,当我在模板中想在标签option中在某个条件下输出selected.但是在里边嵌套if标签的话,condition里边第二个参数使用变量的时候,不能解析.所以只能使用别的方法了.达到 ...

  4. 仿5173游戏交易平台系统SQL注入(可直接脱裤)+Getshell

    最近没事登登好几年前玩过的游戏看看,发现有人喊高价收号,这一看就是骗子,这等骗子还想骗我?我就来看看这逗逼是怎么骗人的,结果发现这人给了一个说是 5173平台交易的网站,叫我直接把号的信息填上去然后填 ...

  5. HTML&CSS----练习隐藏导航栏(初级)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 【液晶模块系列基础视频】2.虚拟U盘

    [液晶模块系列基础视频]2.虚拟U盘 ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee ...

  7. 课堂Scrum站立会议演示

    组名:连连看 组长:张政 组员:张金生.李权.武志远 时间:2016.10.13   20:20--20:40 会议内容: 已完成的内容: 1.选定编译语言,安装软件并配置环境,完成了游戏的基本模型. ...

  8. 自己翻译 delegation 官方文档

    什么是代理,知道怎么用,见过N次.会用代理传值,还不够.代理到底是用来干嘛的嘛?还是看看官方文档吧,自己翻译出来看看是不是通顺 代理: 代理是一个简单高效的模式,尤其是一个类在编程的过程中代表或者需要 ...

  9. 异步调试神器Slog,“从此告别看日志,清日志文件了”

    微信调试.API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中  — Edit 92 commits 4 branches 3 releases ...

  10. Selenium 遇到的问题

    1. How to Resolve Stale Element Reference Exception? First of all lets be clear about what a WebElem ...